我的表格Sales
包含SalesID
,SalesName
,SalesCity
,SalesState
列。
我正在尝试提出一个只显示salesName的查询,其中每个SalesName
只有一个SalesCity
。例如,如果SaleA在休斯顿而SaleB在休斯顿,则SaleA和SaleB将不予退还。
select
SalesName, SalesCity, SalesState
from
Sales
where
(select count(*) from Sales group by SalesCity) = 1;
我不完全确定如何将内部选择链接退出。我需要在嵌套选择中使用另一列来标识SalesID
。我目前陷入困境,没有取得任何进展。
答案 0 :(得分:0)
您可以使用GROUP BY
和HAVING
运营商获取仅有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()
将返回该行的值。