【问题标题】:SQL N items per Group in SQL || SQL Sub Query LimitSQL 中每组的 N 个项目 || SQL 子查询限制
【发布时间】:2015-12-02 16:55:24
【问题描述】:

我想选择使用cats 加入表和data。加入cats.id = data.cat_id。每个唯一类别 ID cat.id 的表行限制为 3 data

表:cats

id | parent_id | name
---+-----------+--------
1  | 0         | Games
2  | 0         | Music
3  | 0         | Apps

表:data

--------------------------
id |  cat_id |  data
---+---------+------------
1  |  1      |  Cat1 Data1
2  |  1      |  Cat1 Data2
3  |  1      |  Cat1 Data3
4  |  1      |  Cat1 Data4
---+---------+------------
5  |  2      |  Cat2 Data1
6  |  2      |  Cat2 Data2
7  |  2      |  Cat2 Data3
8  |  2      |  Cat3 Data4
---+---------+------------
9  |  3      |  Cat3 Data1
10 |  3      |  Cat3 Data2
11 |  3      |  Cat3 Data3
12 |  3      |  Cat3 Data4

我想像下面这样。对于每行一个 cats 选择三个 data 行选择。

category  | data
----------+------------
Games     | Cat1 Data1
Games     | Cat1 Data2
Games     | Cat1 Data3
----------+------------
Music     | Cat2 Data1
Music     | Cat2 Data2
Music     | Cat2 Data3
----------+------------
Apps      | Cat3 Data1
Apps      | Cat3 Data2
Apps      | Cat3 Data3

如果 group_concat, 不可行,也适用于我。我会用php拆分。

cat_name  |  data
----------+-------------------------------------
Book      | Cat1 Data1, Cat1 Data2, Cat1 Data3
Music     | Cat2 Data1, Cat2 Data2, Cat2 Data3
Game      | Cat3 Data1, Cat3 Data2, Cat3 Data3

【问题讨论】:

  • 哪个是引擎(mysql 或 sql-server)?
  • 很难准确理解您想要什么,但似乎您可以通过在多个查询上使用UNION 来完成您想做的事情,同时将每个查询限制为前 3 项。
  • mysql和xampp我开发一个php应用
  • 我要选择5个分类项和groupconat 3个数据表列

标签: php mysql sql database


【解决方案1】:

希望这能解决你的问题

SELECT
    sq.category,
    sq.data
FROM (
    SELECT
        DATA.*,
        cats.name AS category,
        row_number() over(PARTITION BY cat_id ORDER BY cat_id DESC) AS ROW_COUNT FROM `data`
    INNER JOIN cats ON data.cat_id = cats.id
    ) AS sq
WHERE
    ROW_COUNT <= 3

在查询中 ... ... ROW_COUNT 3 您可以设置选择限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多