SQL嵌套Select -Subquery返回的值超过1 -

时间:2015-03-15 07:15:19

标签: sql sql-server

我的表格Sales包含SalesIDSalesNameSalesCitySalesState列。

我正在尝试提出一个只显示salesName的查询,其中每个SalesName只有一个SalesCity。例如,如果SaleA在休斯顿而SaleB在休斯顿,则SaleA和SaleB将不予退还。

select 
    SalesName, SalesCity, SalesState
from
    Sales
where
    (select count(*) from Sales group by SalesCity) = 1;

我不完全确定如何将内部选择链接退出。我需要在嵌套选择中使用另一列来标识SalesID。我目前陷入困境,没有取得任何进展。

2 个答案:

答案 0 :(得分:0)

您可以使用GROUP BYHAVING运营商获取仅有1次销售的城市名称。然后在where子句中使用这些结果:

SELECT SalesName, SalesCity, SalesState
FROM Sales WHERE SalesCity IN 
(
    SELECT SalesCity
    FROM Sales
    GROUP BY SalesCity
    HAVING COUNT(SalesCity) = 1
)

答案 1 :(得分:0)

您可以在没有子查询的情况下执行此操作:

select MIN(SalesName) as SalesName, SalesCity, MIN(SalesState) as SalesState
from Sales
group by SalesCity
having count(*) = 1;

如果该城市只有一行,则min()将返回该行的值。