MySQL为多列选择语句DISTINCT

8 mysql select greatest-n-per-group

我目前正在尝试构建一个有点棘手的MySQL Select语句.这是我想要完成的:

我有这样一张桌子:

data_table

uniqueID      stringID          subject
  1             144           "My Subject"
  2             144           "My Subject - New"
  3             144           "My Subject - Newest"
  4             211           "Some other column"
Run Code Online (Sandbox Code Playgroud)

基本上,我想要做的是能够SELECT/GROUP BY stringID(stringID是线程化的图片)而不是重复.此外,我想选择最近的stringID行(在上面的例子中是uniqueID 3).

因此,如果我要查询数据库,它将返回以下内容(最新的uniqueID位于顶部):

uniqueID   stringID    subject
 4          211        "Some other column"  
 3          144        "My Subject - Newest" //Notice this is the most recent and distinct stringID row, with the proper subject column.
Run Code Online (Sandbox Code Playgroud)

我希望这是有道理的.谢谢你的帮助.

And*_*ore 9

请尝试以下方法.它可能不是最有效的查询,但它可以工作:

SELECT uniqueID, stringID, subject
FROM data_table
WHERE uniqueID IN
 (
  SELECT MAX(uniqueID) 
  FROM data_table
  GROUP BY stringID
 )
ORDER BY uniqueID DESC
Run Code Online (Sandbox Code Playgroud)

  • 我找到了这个寻找类似问题的解决方案.这是一个很好的解决方案,但通过使用临时表代替subselect可以提升性能.基于子选择创建临时表,然后在主查询中的子选择所在的位置,将select*from临时表放在其位置.在我的80000+行的数据集中,subselect方法需要几分钟才能运行,而使用临时表则需要大约15秒. (2认同)