我在表格中有三列 Id,State,City。每个州都包含数十个城市。我想做的就是选择唯一的状态并获得他们的ID。
SELECT DISTINCT(State) FROM LocationTable;
这很有效,但我也需要得到Id。我试过了:
SELECT DISTINCT(State), Id FROM LocationTable
并且
SELECT State, Id FROM LocationTable GROUP BY State, Id
但它仍然没有返回唯一的状态..基本上我需要在MSSQL上运行这个MySQL查询:
SELECT UNIQUE(State), Id FROM LocationTable;
谢谢!
答案 0 :(得分:1)
以安德鲁的答案为基础:
DISTINCT
适用于整个数据集,而不仅仅是后面的列。
SELECT distinct State, MAX(Id)
FROM LocationTable
GROUP BY state
将以数字方式为您提供最大的Id
。但是,就像Andrew说的那样,你必须选择如何限制你正在检索的Id
。
有关工作示例,请参阅此示例:http://sqlfiddle.com/#!3/f5b42/5
答案 1 :(得分:0)
尝试使用distinct作为关键字,而不是函数:
SELECT DISTINCT State,Id FROM LocationTable
答案 2 :(得分:0)
SELECT State, Id FROM LocationTable GROUP BY State, Id
当它找到匹配但有不同ID的2个状态时,您期望它做什么?它将返回状态两次,每个ID一次。
我怀疑你的数据是这样的:
ID, State, City
1 WA Seattle
2 WA Tacoma
当你说你想要国家的ID时,你将不得不选择想要的ID,最大值,最小值等。该州没有单一的ID。
对评论的回应:可能是......
Select max(cast(id as binary(16)), state from locationtable group by state
但我认为ID的有效性在这里确实存在问题,你要对ID做什么,它只适用于1行,而不是该状态的所有行。 (演员现在处理它是一个独特的标识符领域)