53

这是我的代码:

 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与 430 关联的所有 idf_com_id和已提交状态的信息,并且类型应该仅在存储在其他表中的进程中(table2

f_idp_keyf_key在两个表中。
但这给了我错误,我想我把WHERE子句放错了,如何解决。?

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

4

4 回答 4

83

是的你是对的。你把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' 
于 2012-09-11T07:16:59.053 回答
12


1.更改WHERE子句前的INNER JOIN。
2. 你有两个不允许的 WHERE。

试试这个:

从表 1 中选择表 1.f_id
  内连接表2
     开(table2.f_id = table1.f_id AND table2.f_type = 'InProcess')
   WHERE table1.f_com_id = '430' AND table1.f_status = '提交'
于 2012-09-11T07:21:30.803 回答
0

你只能写一个 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'
于 2012-09-11T07:17:53.470 回答
0

您正在使用两个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'
于 2012-09-11T07:22:12.010 回答