mysql,选择Distinct仍然返回多个项目

时间:2013-08-10 07:09:37

标签: mysql distinct

我正在尝试进行mysql查询以获得不同数量的值。

我的查询是

SELECT DISTINCT * FROM `videos` WHERE `Title` LIKE '%lovelace%'

它仍然以相同的标题返回结果,

我试着这样做:

SELECT DISTINCT `Title`,* FROM `videos` WHERE `Title` LIKE '%lovelace%'

但它不起作用,任何人都可以帮忙吗?

我希望它返回整行(*),但标题上有不同的规则,

问候

3 个答案:

答案 0 :(得分:5)

使用GROUP BY标题代替DISTINCT

答案 1 :(得分:4)

尝试这样的事情: -

SELECT DISTINCT Title FROM `videos` WHERE `Title` LIKE '%lovelace%'

编辑: -

SELECT * FROM `videos` WHERE `Title` LIKE '%lovelace%' GROUP BY TITLE

答案 2 :(得分:0)

我认为您会发现在查询中对所需内容进行更严格的规范会很有帮助。

猜测,您的videos表似乎包含一些重复项;否则SELECT *会做你需要的。所以,猜测,似乎你正在寻找一个消除重复的查询。

问题是,你如何定义副本?如果您有两行具有相同的Title,则表示您有两个特定视频的列表。大概你只想显示其中一个。哪一个?如何区分想要显示的那个与想要省略的那个?

SELECT DISTINCT非常适合以简单的方式消除重复项。但它不是很复杂。如果您的表有一个主键,可能称为idSELECT DISTINCT *将找不到任何重复项,因为没有任何重复项(当然,每个ID都与前一个不同)。

专业提示:避免在程序中使用SELECT *。避免说明您需要“查询之外的所有内容”。而是在您的查询名称中,您实际需要在结果集中显示的列。

如果您执行此类查询

    SELECT DISTINCT Title,
                    Director,
                    Year
               FROM videos
              WHERE Title LIKE '%lovelace%' 

你可能真的得到了你正在寻找的结果。但是实际查询很难提供帮助,因为您还没有在表格中公开列。