这是我的代码:
SELECT table1.f_id FROM table1 WHERE table1.f_com_id = '430' AND
table1.f_status = 'Submitted'
INNER JOIN table2
ON table2.f_id = table1.f_id
where table2.f_type = 'InProcess'
我需要来自table1
的信息,因为与f_com_id
相关联的所有ID为430,状态为已提交,且类型应仅在进程中存储在其他表(table2
)中
f_id
为p_key
和f_key
但是这给了我错误,我认为我将WHERE
子句放错了,如何修复它。?
错误消息:#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'INNER JOIN table2附近使用正确的语法 ON table2.f_id ='第2行
答案 0 :(得分:43)
是的,你是对的。您已将WHERE
子句放错了位置。您只能在单个查询中使用一个WHERE
子句,因此请针对以下多个条件尝试AND
:
SELECT table1.f_id FROM table1
INNER JOIN table2
ON table2.f_id = table1.f_id
WHERE table2.f_type = 'InProcess'
AND f_com_id = '430'
AND f_status = 'Submitted'
答案 1 :(得分:6)
1.在WHERE子句之前更改INNER JOIN
你有两个不允许的WHERE。
试试这个:
SELECT table1.f_id FROM table1 INNER JOIN table2 ON (table2.f_id = table1.f_id AND table2.f_type = 'InProcess') WHERE table1.f_com_id = '430' AND table1.f_status = 'Submitted'
答案 2 :(得分:1)
你只能写一个where子句。
SELECT table1.f_id FROM table1
INNER JOIN table2
ON table2.f_id = table1.f_id
where table1.f_com_id = '430' AND
table1.f_status = 'Submitted' AND table2.f_type = 'InProcess'
答案 3 :(得分:-2)
您使用了两个WHERE
条款,但只允许使用一个。{p>像这样使用它:
SELECT table1.f_id FROM table1
INNER JOIN table2 ON table2.f_id = table1.f_id
WHERE
table1.f_com_id = '430'
AND table1.f_status = 'Submitted'
AND table2.f_type = 'InProcess'