选择不同的行

时间:2010-07-08 21:37:42

标签: sql mysql

我试图选择不同但不起作用

SELECT  Distinct `table1`.`myID` AS `myID`,  
                 `table1`.`TypeID` AS `TypeID`,  

我有什么遗漏的东西吗?

3 个答案:

答案 0 :(得分:3)

Distinct不适用于单个字段,它适用于整个行。您的结果仅包含不同的行,即只删除所有字段相同的行。

如果您想要特定字段的不同值,可以使用group by

select table1.myID, min(table1.TypeID) as TypeId
from ...
group by table1.myID

这将为您提供具有myID的不同值的结果,但对于您未分组的字段,您应指定要获取的值。为此,您可以使用minmax等聚合。 MySQL可能允许你指定没有聚合的字段,但是它只会选择出现的第一个值(可能根本不是你认为的第一个值)。

答案 1 :(得分:1)

一种做你想要的方法是:

SELECT  Distinct 'myID' as IDType, `table1`.`myID` AS ID
UNION
SELECT DISTINCT 'TypeID' as IDType, `table1`.`TypeID` AS `ID`

这将为每列提供唯一值,如下所示:

myID    1
myID    2
myID    3
TypeID  101
TypeID  201
TypeID  301

您不会知道哪些值组合在一起,但您会知道每列中显示哪些值。

答案 2 :(得分:1)

您不能仅在列上使用distinct。

您可以使用子查询完成您要执行的操作。