我有客户 客户可以有N次送货 每个Delivery可以有N条短信
送货有 client_id 短信作为 Delivery_id
我想从短信表中检索所有短信,但每个客户端最多 10 条短信。
这是因为“sms”是要发送的短信队列。因此,我想最初以这种简单的方式保持每个客户端发送的短信分配的平衡。
有没有办法仅使用 SQL 来完成此任务?
如果我加入客户端发送短信...如何为每个客户端仅选择十条短信?
我将 MYSQL 与 InnoDb 结合使用
最佳答案
这在 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/