【问题标题】:Ordering of grouped rows in mysqlmysql中分组行的排序
【发布时间】:2013-02-12 19:45:02
【问题描述】:
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

如何按照与 IN TAG 匹配的数量对商品进行排序?我深入手册,找不到答案,迷失在我不理解的东西中。

【问题讨论】:

    标签: mysql group-by sql-order-by


    【解决方案1】:

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

    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
    

    【讨论】:

    • 谢谢。我为你感到骄傲。
    • @user2044390 -- 我什至还没打完 :) 如果您有任何问题,请告诉我 -- 未经测试。祝你好运。
    • 出现问题 #1248 - 每个派生表都必须有自己的别名
    • @user2044390 查看编辑——就像我说的,我还没有完成输入:)——这只是意味着子查询需要一个别名(我给了它)。
    • @user2044390 -- 顺便说一句,如果这个答案对您有所帮助,请考虑将其标记为已接受以帮助该网站的未来用户。祝你好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2016-12-11
    相关资源
    最近更新 更多