带有 WHERE 子句的 MySql 内部连接 [关闭]
Posted
技术标签:
【中文标题】带有 WHERE 子句的 MySql 内部连接 [关闭]【英文标题】:MySql Inner Join with WHERE clause [closed] 【发布时间】:2012-09-04 01:57:58 【问题描述】:这是我的代码:
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 行
【问题讨论】:
近 80k 浏览量,约 12 票问答,25+ 票。当然不会太本地化。 一个非常流行的语法错误,是的。可能不是太本地化,但仍然离题,就像其他语法错误一样。 【参考方案1】:是的,你是对的。你把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'
【讨论】:
thnx 很多..它对我有用.. 但我觉得 JOIN 操作总是一种成本更高的方法,我们可以在不使用 join 操作的情况下以其他方式做到这一点。如果可能的话? @AdityaKumar Join 是比其他方法更好的方法(例如子查询等)。更喜欢加入。见this SQLFiddle。【参考方案2】:你只能写一个 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】: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 = '提交'
【讨论】:
奇怪的是,括号解决了我的问题【参考方案4】:您使用了两个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'
【讨论】:
以上是关于带有 WHERE 子句的 MySql 内部连接 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 mysqli 准备语句中使用多个内部连接和多个 WHERE 子句? [复制]