一行

时间:2018-01-29 11:45:28

标签: sql sql-server

我有一个像客户一样的表:

Name    City    Country    Product
John    London  UK         Crisps
Paul    Perth   Australia  Juice
George  Manaus  Brazil     Bread
Ringo   Tokyo   Japan      Chocolate

我需要根据2个列值是否与另一个表匹配来执行Select语句,例如:

Country    Product
UK         Crisps
Australia  Crips
Brazil     Chocolate
Japan      Chocolate

这两个值都需要存在于表中,因为我需要在表A中选择一行,其中BOTH值存在于表B的一行中,在表A中有一行其中Country是UK而product是Crisps,应退回,但国家为澳大利亚,产品为薯片不应退回。

我做了什么

我试图加入这些表但没有运气,我也在一个选择声明中尝试了EXISTS,但也不会让我这样做,我现在已经没有想法了

3 个答案:

答案 0 :(得分:1)

试试这个

select Name, Product from Table_1
intersect
select Name, Product from Table_2

答案 1 :(得分:0)

这似乎是一个基本的join

select c.*
from customers c join
     table2
     on t2.country = c.country and t2.product = t.product;

或者您可以使用exists

答案 2 :(得分:0)

更好的SQL将是

SELECT * FROM table1 t1 WHERE 0< (SELECT count(1)FROM table2 t2 where t2.country = t1.country and t2.product = t1.product);