2013-02-26 37 views
0

單列我有一些行是這樣的:檢查多個值在相同的參考

Table: Orders 
OrderNumber  City 
------------------------ 
1001   Austin 
1001   Dallas 
1001   Houston 
1001   Miami 
1002   Austin 
1003   Austin 
1003   Dallas 

我想提取有市奧斯汀任何其他城市的所有OrderNumbers。在上面的例子中,我應該得到訂單1001和1003,但不是1002.

完成此操作的最佳方法是什麼?

回答

1

您應該能夠使用:

select * 
from orders o1 
where o1.city = 'Austin' 
    and exists (select ordernumber 
       from orders o2 
       where o1.ordernumber = o2.ordernumber 
       group by ordernumber 
       having count(distinct city) >1) 

SQL Fiddle with Demo

2

另一種可能的方法是有兩個CTE(公共表表達式) - 一個用於所有Austin秩序,另一個用於所有其他訂單 - 並加入那些在OrderNumber

WITH AustinOrders AS 
(
    SELECT OrderNumber FROM Orders WHERE City = 'Austin' 
), OtherOrders AS 
(
    SELECT OrderNumber FROM Orders WHERE City <> 'Austin' 
) 
SELECT 
    DISTINCT ao.OrderNumber 
FROM AustinOrders ao 
INNER JOIN OtherOrders oo ON ao.OrderNumber = oo.OrderNumber 

主要生產的結果:

OrderNumber 
----------- 
    1001 
    1003