我正在努力寻找我想要运行的查询的答案。我想要
SELECT * FROM users AND tempusers WHERE username='joe'
两个表都有一个名为 username 的列。我不断遇到 SQL 1064 语法错误,这对我没有多大帮助。
数据库结构:
数据库名称:mydb
表:用户 列:id、用户名、电子邮件、密码。
表:临时 用户列:id、用户名、电子邮件、密码、激活码。
你得到的错误是因为你不能选择 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
该列使用正确类型的值。activationcode
0
这可能会解决错误并帮助您思考错误发生的原因:
SELECT *
FROM users, tempusers
WHERE users.username='joe'
or tempusers.username='joe'
但是- 我强烈建议在这里使用正确的连接。这个查询会很慢,而且很麻烦。Ken White 的回答很成功(绝对应该被接受)——我发布这个只是为了帮助您更清楚地理解初始错误(dbms 无法区分您指的是哪个表的用户名列并且可以) t 在一个陈述中同时提及两者)。