我尝试选择不同的,但它不工作选择不同的行
SELECT Distinct `table1`.`myID` AS `myID`,
`table1`.`TypeID` AS `TypeID`,
有我缺少什么东西?
我尝试选择不同的,但它不工作选择不同的行
SELECT Distinct `table1`.`myID` AS `myID`,
`table1`.`TypeID` AS `TypeID`,
有我缺少什么东西?
Distinct在单个字段上不起作用,它在整行上起作用。您的结果仅包含不同的行,即仅删除所有字段相同的行。
如果你想为一个特定的领域不同的值,你可以使用group by
:
select table1.myID, min(table1.TypeID) as TypeId
from ...
group by table1.myID
这会给你一个结果,具有鲜明的值myID
,但你是不是在你的分组字段应该指定要获取的值。为此,您可以使用总计如min
和max
。 MySQL可能允许你指定没有聚集的字段,但是它只会选择出现的第一个值(根本不可能是你认为的第一个值)。做你仿佛想
我应该如何处理单个记录? – Autolycus 2010-07-08 21:43:16
一种方法是:
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
你不会知道哪个值一起去,但是您会知道每列中显示哪些值。
您不能在仅列的行上使用distinct。
您可以使用子查询完成您正在尝试执行的操作。
什么不工作,你得到什么结果而不是你想要的?我怀疑你正在尝试以不符合预期的方式使用不同的方式。如果您选择多个列,则结果集将包含值的不同TUPLES(对,三元组等),而不是每列的不同值... – 2010-07-08 21:40:12