我试图选择不同但不起作用
SELECT Distinct `table1`.`myID` AS `myID`,
`table1`.`TypeID` AS `TypeID`,
我有什么遗漏的东西吗?
答案 0 :(得分:3)
Distinct不适用于单个字段,它适用于整个行。您的结果仅包含不同的行,即只删除所有字段相同的行。
如果您想要特定字段的不同值,可以使用group by
:
select table1.myID, min(table1.TypeID) as TypeId
from ...
group by table1.myID
这将为您提供具有myID
的不同值的结果,但对于您未分组的字段,您应指定要获取的值。为此,您可以使用min
和max
等聚合。 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。
您可以使用子查询完成您要执行的操作。