使用WHERE IN从多个表加入

时间:2014-08-29 06:02:28

标签: mysql join where-in

我很难在Google上找到与此问题相关的任何内容。

我尝试做的是使用IN语句从多个表中查询具有未知数量的值...

SELECT * FROM table_1 t1 WHERE t1.t1_id IN ('12345223', '2343374') JOIN table_2 t2 WHERE t2.t2_id IN ('2164158194', '3232422423')

上面的代码演示了我想要实现的目标。我不是一个SQL大师所以我不能完全确定我所追求的是否可以通过这种方式完成,或者是否有更好的方法来实现它。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你的条款顺序混乱了。你应该去1。)SELECT,2。)FROMJOIN s,3。)WHERE

像这样:

SELECT * 
FROM table_1 t1 
JOIN table_2 t2 
WHERE t1.t1_id IN ('12345223', '2343374')
  AND t2.t2_id IN ('2164158194', '3232422423')

但你的陈述似乎也错过了一个JOIN条件,所以它会导致错误(它在oracle中)或(假设t1_id和t2_id是主键)给你4个结果行(似乎是在mysql中这样做):

t1_id            t2_id
12345223         2164158194
12345223         3232422423
2343374          2164158194
2343374          3232422423

没有条件的JOIN几乎不是你真正想要的,如果是,它应该在语句中明确并使用CROSS JOIN

答案 1 :(得分:0)

像这样更新您的查询:

SELECT * 
FROM table_1 t1 
JOIN table_2 t2 
ON t1.t1_id  = t2.reft1_id
WHERE t1.t1_id IN ('12345223', '2343374') 
AND t2.t2_id IN ('2164158194', '3232422423')

" ON"子句必须包含两个表中链接的两列。