我有一张如下表。
ID NAME
1 JOHN
2 JANE
3 JACK
在一个简单的 select 语句中,如何从表中查询 JOHN 和 JANE?
条件是:
一世。结果必须返回 JOHN 和 JANE。
ii. 如果从表中删除了 JOHN 或 JANE,它将只返回空结果。
我有一张如下表。
ID NAME
1 JOHN
2 JANE
3 JACK
在一个简单的 select 语句中,如何从表中查询 JOHN 和 JANE?
条件是:
一世。结果必须返回 JOHN 和 JANE。
ii. 如果从表中删除了 JOHN 或 JANE,它将只返回空结果。
您可以使用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');
JohnAndJaneBothExist()
2.
SELECT * FROM TABLENAME
WHERE
JohnAndJaneBothExist and
Name In ('John', 'Jane')
尝试这个:
SELECT
GROUP_CONCAT( `NAME` ) as names
FROM `TABLE`
WHERE 1
AND NAME IN ('JOHN','JANE')
HAVING names= 'JOHN,JANE'