我是SQL新手并且给出了下表 Table ,我想检索John和Paul名称(应该是2222)使用的ID值。
ID Name
1111 John
1111 Zach
2222 John
2222 Zach
2222 Paul
3333 Zach
我试图使用以下声明:
SELECT * FROM `Table2` WHERE Name='John' AND Name='Paul'
但它返回一个空集。没有OR语句,有没有人知道这个SQL语句?
答案 0 :(得分:2)
SELECT ID
FROM Table2
WHERE Name IN ('John', 'Paul')
GROUP BY ID
HAVING COUNT(DISTINCT Name) = 2
答案 1 :(得分:0)
(SELECT * FROM `Table2` WHERE Name='John')
UNION
(SELECT * FROM `Table2` WHERE Name='Paul')
答案 2 :(得分:0)
你的部分困难在于你如何表达问题。如果您想要“检索名称为John或Paul的ID值”,则该查询将如下所示:
Select ...
From Table2
Where Name = 'John'
Or Name = 'Paul'
Name = 'John' Or Name = 'Paul'
也可以写成:Name In('John','Paul')
,如保罗建议的那样。
如果您想要的是“检索存在名称为John的行的ID值,并且存在名为Paul的行”,那么您可能希望使用Joe Stefanelli's solution。
答案 3 :(得分:0)
我想你应该把表的名称放在[] .. [表2]而不是'表2'
答案 4 :(得分:0)
SELECT ID 从表2 名字输入('John','Paul')
答案 5 :(得分:0)
这需要自联接和表别名:
SELECT u.ID
FROM Table AS u
JOIN Table AS v ON v.id = u.id
WHERE v.name = 'John'
AND u.name = 'Paul'
它连接所有相同的ID值对,并返回其中一个名称为“John”且另一个名称为“Paul”的那些对的ID号。
答案 6 :(得分:0)
使用以下查询
select distinct(t1.ID) from table123 t1 , table123 t2 where t1.ID=t2.ID and t1.name='John' and
t2.name='Paul' ;