2016-12-05 69 views
0

我想知道是否(以及如何?)我可以使用查詢的結果集作爲另一個查詢中的WHERE子句的輸入。使用SQL查詢的結果作爲WHERE子句的輸入

例如,我有一個查詢獲取「代碼」列表,我想SELECT所有來自另一個表的元組都具有 - 作爲「代碼」值 - 以前獲取的元素之一。

我使用JDBC,所以我想知道我是否需要使用一些Java編程或如果我可以直接使用SQL。

回答

0

當然是可以

試試這個例如

SELECT f1 , f2 , f3 , etc 
    FROM table1 
    WHERE f1 IN (SELECT field1 FROM table2) 
+3

這僅適用於如果'table2'只有1個記錄 –

+0

嘗試F1在(選擇場FROM表2) –

+0

我知道,(否則我會沒有發佈我的評論),你可能想考慮**編輯**你的答案,而不是評論。 –

2
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); 

什麼在我看來是更好的語法。

0

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