mysql - SQL:帮助我选择 1 -> N -> N 关系中的记录

标签 mysql sql

我有客户 客户可以有N次送货 每个Delivery可以有N条短信

送货有 client_id 短信作为 Delivery_id

我想从短信表中检索所有短信,但每个客户端最多 10 条短信。

这是因为“sms”是要发送的短信队列。因此,我想最初以这种简单的方式保持每个客户端发送的短信分配的平衡。

有没有办法仅使用 SQL 来完成此任务?

如果我加入客户端发送短信...如何为每个客户端仅选择十条短信?

我将 MYSQL 与 InnoDb 结合使用

最佳答案

这在 mysql 中并不容易做到。这个问题有一些可能有用的答案:

ROW_NUMBER() in MySQL

特别是文章http://www.explodybits.com/2011/11/mysql-row-number/应该有帮助。

如果它对其他人有帮助,对于 SQL Server(2005 或更高版本),可以这样做:

WITH
ClientSms AS
(
  SELECT
    Client.Client_id,
    Sms.Content,
    ROW_NUMBER() OVER
    (
      PARTITION BY Client.Client_id
      ORDER BY Sms.Content
    ) AS RowNumber
  FROM Client
    INNER JOIN Delivery ON Delivery.Client_id = Client.Client_id
    INNER JOIN Sms ON Sms.Delivery_id = Delivery.Delivery_id
)
SELECT
    Client.Client_id,
    Sms.Content
FROM ClientSms
WHERE RowNumber <= 10
ORDER BY
    Client.Client_id,
    Sms.Content

关于mysql - SQL:帮助我选择 1 -> N -> N 关系中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14136008/

相关文章:

mysql - 启动服务器后,带有sequelize的Nodejs无法在mysql工作台中创建表

SQL In子句值

mysql - 连接表中多行中的值并将其写入新表中的单元格

mysql - 通过不返回我所期望的来多次加入 order by 和 group

php - 使用 php 搜索具有多个字段的整个数据库表

php - 多加一张表查询统计数据SQL

mysql - 如果我将外键添加到其中一列,表中的孤立行会发生什么情况

mysql - 根据同一个 mysql 表中的 id 添加点列

c# - 在SQL中从一行中选择多行

sql - 简单的 MS SQL 计数问题