我很难在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大师所以我不能完全确定我所追求的是否可以通过这种方式完成,或者是否有更好的方法来实现它。非常感谢任何帮助。
答案 0 :(得分:0)
你的条款顺序混乱了。你应该去1。)SELECT
,2。)FROM
与JOIN
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"子句必须包含两个表中链接的两列。