【问题标题】:SQL search, search for a|b|c|d in a table and return results ordered by number of elements in the recordSQL搜索,在表中搜索a|b|c|d,返回按记录中元素个数排序的结果
【发布时间】:2010-08-24 06:56:53
【问题描述】:

问题: 有两个表 - DAYS(name), ACTIONS(day_name,name)

DAYS 的记录是:

Sunday, Monday, Wednesday

ACTIONS 的记录是:

{eat,sunday},
{sleep,sunday},
{write,sunday},
{drink,sunday}

{eat,wednesday},
{sleep,wednesday},
{write,wednesday},

{eat,monday},
{sleep,monday},

我想在 ACTIONS 中搜索窗帘操作次数最多的日子,并返回从高到低排序的结果。 含义:如果我搜索“吃”、“睡”、“写”和“喝” - 结果将是: sunday, wednesday, monday.

【问题讨论】:

    标签: sql search count sql-order-by


    【解决方案1】:
    SELECT d.name
        FROM ACTIONS a JOIN DAYS d ON a.day_name=d.name
            WHERE a.name IN ('eat', 'sleep', 'write', 'drink')  -- Your search
                GROUP BY a.name
                    ORDER BY COUNT(*) DESC;
    

    【讨论】:

      【解决方案2】:

      你在找这个吗...

      SELECT day_name, number FROM
      (
        SELECT day_name, COUNT(*) 
        FROM ACTIONS 
        WHERE name in ('eat', 'sleep', 'write') 
        GROUP BY day_name
      ) AS Test
      ORDER BY number DESC
      

      【讨论】:

        【解决方案3】:
        select 
            day_name, count(day_name) qty
        from
            actions
        where 
            name in ('eat', 'sleep', 'write', 'drink')
        group by day_name
        order by qty desc
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-20
          • 2012-05-09
          • 2015-05-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多