2013-04-16 52 views
-5

我有一張如下所示的表格。SQL - 僅當條件匹配時才選擇

ID NAME 
1 JOHN 
2 JANE 
3 JACK 

在一個簡單的select語句中,如何從表中查詢JOHN和JANE?

條件是:

i。結果必須返回JOHN和JANE。

ii。如果從表中刪除了JOHN或JANE,它只會返回空結果。

+2

這廁所ks可疑地像功課 –

+3

-1沒有證據顯示你已經嘗試過什麼,你遇到什麼麻煩等等。沒問題要求做家庭作業的問題,但至少在你要求你的工作人員爲你做這件事之前,自己有一個破解。 – Sepster

+0

請顯示一些努力...你有什麼嘗試? –

回答

3

你可以使用GROUP BY/HAVING,確保有2場比賽:

SELECT Name 
FROM T 
WHERE Name IN ('JOHN', 'JANE') 
AND  EXISTS 
     ( SELECT 1 
      FROM T 
      WHERE Name IN ('JOHN', 'JANE') 
      HAVING COUNT(DISTINCT Name) = 2 
     ); 

或者你可以使用一個自聯接:

SELECT a.Name 
FROM T a 
     INNER JOIN T b 
      ON a.Name != b.Name 
WHERE a.Name IN ('JOHN', 'JANE') 
AND  b.Name IN ('JOHN', 'JANE'); 

Examples on SQL Fiddle (MySQL)

Examples on SQL Fiddle (Oracle)

Examples on SQL Fiddle (Postgresql)

0

試試這個:

SELECT 
    GROUP_CONCAT(`NAME`) as names 
FROM `TABLE` 
WHERE 1 
    AND NAME IN ('JOHN','JANE') 
HAVING names= 'JOHN,JANE' 
0
  1. 創建函數JohnAndJaneBothExist()

2.

SELECT * FROM TABLENAME 
WHERE 
    JohnAndJaneBothExist and 
    Name In ('John', 'Jane') 
相關問題