2013-04-16 54 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') 
相关问题