Mysql SQL-选择行从一列中删除重复项并按顺序排序

Mysql SQL-选择行从一列中删除重复项并按顺序排序,mysql,sql,Mysql,Sql,我有一张这样的桌子(游戏): ID| title |category|rank ________________________ 11|FIFA 17| ps3 | 3 22|FIFA 17| ps4 | 2 33|FIFA 17|xbox one| 4 44| GTA 5 | ps3 | 3 55| GTA 5 | ps4 | 2 66| GTA 5 |xbox one| 4 77|FIFA 16| ps3 | 3 88|FIFA 16| ps4 | 2 9

我有一张这样的桌子(
游戏
):

ID| title |category|rank
________________________
11|FIFA 17|  ps3   | 3
22|FIFA 17|  ps4   | 2
33|FIFA 17|xbox one| 4
44| GTA 5 |  ps3   | 3
55| GTA 5 |  ps4   | 2
66| GTA 5 |xbox one| 4
77|FIFA 16|  ps3   | 3
88|FIFA 16|  ps4   | 2
99|FIFA 16|xbox one| 4
我想要
标题
包含
国际足联
的所有行,但不要重复!并按
rank
ASC
排序,因此:

ID| title |category|rank
________________________
22|FIFA 17|  ps4   | 2
88|FIFA 16|  ps4   | 2
我尝试的是:

SELECT * FROM games WHERE title LIKE '%FIFA%' GROUP BY title ORDER BY rank ASC
标题
中的重复项将被删除,但
按等级排序的ASC
被完全忽略,结果如下:

ID| title |category|rank
________________________
11|FIFA 17|  ps3   | 3
99|FIFA 16|xbox one| 4
编辑:

我只想要一次所有头衔,也就是排名最低的

我可以建议:

SELECT g.*
FROM games g
WHERE g.title LIKE '%FIFA%' AND
      g.rank = (SELECT MIN(g2.rank) FROM games g2 WHERE g2.id = g.id);

基于您的输出。看起来你只想要PS4而不是ps3。对的 试试这个:

SELECT * FROM games WHERE title LIKE '%FIFA%' 
 and category = 'ps4'
GROUP BY title ORDER BY rank ASC

我想您只想看到每个标题的
排名最低的行。。。这里有一个方法:

SELECT b.Id, b.title, b.category, b.rank
FROM (SELECT title, MIN(rank) as LowestRank
      FROM games
      GROUP BY title) A
JOIN games B on B.Title = A.Title
            and A.LowestRank = B.rank
WHERE B.title LIKE 'FIFA%'

ASC是默认排序order@AnnaLederle当数据中有多个级别的同一标题时,查询应考虑哪个级别?哪一类?在提问之前,请仔细考虑这个问题。我提到的“哪一类”我只想要特定的类别?是的,你需要指定你想要如何处理排名和类别。我们不是读心术的人,mysql也不是读心术的人。@AnnaLederle在这个网站上回答问题的最佳方式通常是查看预期的输出并编写一个查询来完成它。这是因为很多时候,OP想要做的事情有一个更简单的方法。这就是为什么人们关注
类别
ID
,或者我的答案
MIN(rank)
,因为这似乎是解决问题的一种更简单的方法。要明白,我们只是随机抽出时间尝试和帮助的人。在这种情况下,这个问题是一个问题duplicate@Shadow是的,如果是的话,我很高兴把它标记为一个。我没有得到任何结果:/@AnnaLederle这个答案中演示的方法是你问题的标准解决方案之一(顺便说一句,你的问题每天至少得到一次回答…)@AnnaLederle嘿Anna,现在再试一次。我把别名弄混了,但现在已经修好了。旁注,如果在
FIFA
之前有任何东西出现,那么就把多余的
%
添加回去。
FIFA%
将使用索引,
%FIFA%
不会,而且它似乎不需要,所以我在回答中删除了它。在这种情况下,问题是重复的不要删除重复的标题,也不要按等级ASC排序。我在问题中清楚地说明了我需要什么