MySql内部加入WHERE子句

时间:2012-09-11 07:15:59

标签: mysql sql where-clause mysql-error-1064

这是我的代码:

 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)中

两张表中的{p> f_idp_keyf_key 但是这给了我错误,我认为我将WHERE子句放错了,如何修复它。?

  

错误消息:#1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'INNER JOIN table2附近使用正确的语法   ON table2.f_id ='第2行

4 个答案:

答案 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'