我正在尝试进行mysql查询以获得不同数量的值。
我的查询是
SELECT DISTINCT * FROM `videos` WHERE `Title` LIKE '%lovelace%'
它仍然以相同的标题返回结果,
我试着这样做:
SELECT DISTINCT `Title`,* FROM `videos` WHERE `Title` LIKE '%lovelace%'
但它不起作用,任何人都可以帮忙吗?
我希望它返回整行(*),但标题上有不同的规则,
问候
答案 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
非常适合以简单的方式消除重复项。但它不是很复杂。如果您的表有一个主键,可能称为id
,SELECT DISTINCT *
将找不到任何重复项,因为没有任何重复项(当然,每个ID都与前一个不同)。
专业提示:避免在程序中使用SELECT *
。避免说明您需要“查询之外的所有内容”。而是在您的查询名称中,您实际需要在结果集中显示的列。
如果您执行此类查询
SELECT DISTINCT Title,
Director,
Year
FROM videos
WHERE Title LIKE '%lovelace%'
你可能真的得到了你正在寻找的结果。但是实际查询很难提供帮助,因为您还没有在表格中公开列。