mysql中分组行的排序

mysql中分组行的排序,mysql,group-by,sql-order-by,Mysql,Group By,Sql Order By,如何根据标签中的匹配项的数量对项目进行排序?我非常深入地阅读了手册,找不到答案,我迷失在了我不懂的东西中。你可以使用COUNT并将结果放入子查询中: SELECT t1.item_id, t1.item, t1.created, t1.owner, t1.type, t1.fld, t2.tag FROM items AS t1 INNER JOIN tagged AS t2 ON t1.item_id = t2.item_id WHERE tag IN ('how', 'jkas', 'bod

如何根据标签中的匹配项的数量对项目进行排序?我非常深入地阅读了手册,找不到答案,我迷失在了我不懂的东西中。

你可以使用
COUNT
并将结果放入子查询中:

SELECT t1.item_id, t1.item, t1.created, t1.owner, t1.type, t1.fld, t2.tag
FROM items AS t1
INNER JOIN tagged AS t2 ON t1.item_id = t2.item_id
WHERE tag
IN ('how', 'jkas', 'bodor', 'zimp', 'ctuo', 'sjex', 'kek'
)
GROUP BY item_id
ORDER BY t1.created DESC 
LIMIT 0 , 100

非常感谢。我为你感到骄傲。@user2044390——我甚至还没有完成输入:)如果你对它有任何问题,请告诉我——非常未经测试。祝你好运。问题出现了#1248-每个派生表都必须有自己的表alias@user2044390看编辑——就像我说的,我还没有打字:)——这就意味着子查询需要别名(我给它了)。@ USE204390-BTW,如果这个答案帮助了你,考虑把它标记为接受来帮助站点的未来用户。祝你好运
SELECT * 
FROM (
   SELECT t1.item_id, t1.item, t1.created, t1.owner, 
      t1.type, t1.fld, t2.tag, COUNT(DISTINCT t2.tag) tagCount
   FROM items AS t1
      INNER JOIN tagged AS t2 ON t1.item_id = t2.item_id
   WHERE tag IN ('how', 'jkas', 'bodor', 'zimp', 'ctuo', 'sjex', 'kek')
   GROUP BY item_id
) t
ORDER BY tagCount DESC, created DESC 
LIMIT 0 , 100