1

我正在努力寻找我想要运行的查询的答案。我想要

SELECT * FROM users AND tempusers WHERE username='joe'

两个表都有一个名为 username 的列。我不断遇到 SQL 1064 语法错误,这对我没有多大帮助。

数据库结构:

数据库名称:mydb

:用户 :id、用户名、电子邮件、密码。

:临时 用户:id、用户名、电子邮件、密码、激活码。

4

2 回答 2

6

你得到的错误是因为你不能选择 from table1 AND table2; 这通常不是有效的 SQL 语法。(我说“通常”是因为 MySQL 有一些大多数其他数据库不使用的专有语法。)

a 似乎JOIN不会起作用,因为您没有描述表之间的那种关系。

如果两个表具有完全相同的结构(列名和类型以及相同的列数),这应该可以工作:

SELECT * FROM users WHERE username = 'joe'
UNION ALL
SELECT * FROM tempusers WHERE username = 'joe'

如果表没有相同的确切架构,您必须至少在第一个表中命名列SELECT

SELECT 
  username, id, username, email, password, '' as activationcode
FROM 
  users 
WHERE 
  username = 'joe'
UNION ALL
SELECT 
  username, id, username, email, password, activationcode
FROM 
  tempusers
WHERE 
  username = 'joe'

''您可能必须在第一个选择中提供空格来代替,或者如果它不是字符列(例如,对于整数列) ,则为activationcode该列使用正确类型的值。activationcode0

于 2012-06-04T02:17:50.060 回答
0

这可能会解决错误并帮助您思考错误发生的原因:

SELECT * 
FROM   users, tempusers 
WHERE  users.username='joe' 
       or tempusers.username='joe'

但是- 我强烈建议在这里使用正确的连接。这个查询会很慢,而且很麻烦。Ken White 的回答很成功(绝对应该被接受)——我发布这个只是为了帮助您更清楚地理解初始错误(dbms 无法区分您指的是哪个表的用户名列并且可以) t 在一个陈述中同时提及两者)。

于 2012-06-04T03:08:44.300 回答