PHP MSSQL Distinct无效

时间:2012-08-18 17:28:20

标签: php sql-server select

我在表格中有三列 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;

谢谢!

3 个答案:

答案 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行,而不是该状态的所有行。 (演员现在处理它是一个独特的标识符领域)