- 此问题在此处已有答案**:
Using LIMIT within GROUP BY to get N results per group?(14个答案)
昨天关门了。
下面的SQL代码工作正常,它的目的是显示每个用户订购的所有产品,并按产品降序排列。
当我试图限制客户及其相关产品的显示时出现问题,所以当我使用LIMIT 2
时,我试图在ORDER BY
行后立即插入LIMIT 2,但出现了一个问题:我只显示一个客户的2次购买,所以总共我只打印了2行。
cursor.execute('''SELECT Client.client_name, Purchases.product
FROM Client
INNER JOIN Purchases
ON Client.client_name = Purchases.client_name
ORDER BY client_name;''')
我想为每个客户打印2行。我应该在哪里以及如何输入LIMIT 2?你能告诉我吗?(尽量不要写太复杂的SQL,因为我对SQL了解很少,我想尽量保持代码简单)
在下面的例子中,我想打印James,George,Sophie并得到以下输出:
client_name | product |
\------------+-----------+
James | Hard Disk |
James | Mouse |
George | Book |
George | Keyboard |
Sophie | Mouse |
Sophie | Coffee |
我使用的两个主要表如下:
- 客户**
client_name | born |
-----------+---------+
James | 1988 |
George | 1988 |
Sophie | 1988 |
- 采购**
client_name | product |
------------+-----------+
James | Hard Disk |
James | Mouse |
George | Book |
George | Keyboard |
Sophie | Mouse |
Sophie | Coffee |
Harry | Cd |
Harry | Book |
Lily | Mouse |
Lily | Desk |
1条答案
按热度按时间piah890a1#
您可以使用
row_number
窗口函数count为每个产品每个客户端分配一个编号,然后为其设置一个条件: