使用SQL查询的结果作为WHERE子句的输入
问题描述:
我想知道是否(以及如何?)我可以使用查询的结果集作为另一个查询中的WHERE子句的输入。使用SQL查询的结果作为WHERE子句的输入
例如,我有一个查询获取“代码”列表,我想SELECT
所有来自另一个表的元组都具有 - 作为“代码”值 - 以前获取的元素之一。
我使用JDBC,所以我想知道我是否需要使用一些Java编程或如果我可以直接使用SQL。
答
当然是可以
试试这个例如
SELECT f1 , f2 , f3 , etc
FROM table1
WHERE f1 IN (SELECT field1 FROM table2)
答
Select * from table2 -- this is another table from your question
where code in (select code from table1); -- this is where clause that gets code from first table.
其实查询等效于:
Select t2.* from table2 t2
inner join table1 t1 on (t1.code = t2.code);
什么在我看来是更好的语法。
答
的in
关键词是精细查找单码值插入到另一台,但多列关联,则应该使用inner join
:
SELECT employees.name
FROM employees
INNER JOIN departments
ON employees.department = departments.department
AND employees.position = departments.position
WHERE departments.jobtitle = 'Manager'
使用in
条款按@卡茨珀的评论,而不是另一个例子不是所有的数据库都支持这个语法:
SELECT employees.name
FROM employees
WHERE (department,position) IN
(
SELECT department,position
FROM departments
WHERE jobtitle = 'Manager'
)
+1
Oracle支持这样的语法:“select(c1,c2,c3)in select c1,c2,c3 form t2',所以你可以用'in'做多列。但是'join'更具可读性 – Kacper
这仅适用于如果'table2'只有1个记录 –
尝试F1在(选择场FROM表2) –
我知道,(否则我会没有发布我的评论),你可能想考虑**编辑**你的答案,而不是评论。 –