我很难找到我想要运行的查询的答案。我想
SELECT * FROM users AND tempusers WHERE username='joe'
两个表都有一个名为username的列。我一直受到SQL 1064语法错误的影响,这对我没有多大帮助。
数据库结构:
数据库名称:mydb
表:用户 列:ID,用户名,电子邮件,密码。
表:tempusers 列:id,username,email,password,activationcode。
答案 0 :(得分:6)
您收到的错误是因为您无法从table1 AND table2
中选择;这通常不是有效的SQL语法。 (我说“通常”因为MySQL有一些大多数其他数据库不使用的专有语法。)
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
表示整数列。)
答案 1 :(得分:0)
这可能会解决错误并帮助您思考错误发生的原因:
SELECT *
FROM users, tempusers
WHERE users.username='joe'
or tempusers.username='joe'
然而 - 我强烈建议您在此处使用正确的联接。这个查询会很慢,而且很麻烦。 Ken White的回答是肯定的(并且肯定应该是接受的) - 我只是发布这个来帮助您更清楚地理解初始错误(dbms无法区分您所指的哪个表的用户名列,并且可以' t在一个陈述中引用两者。)