gpt4 book ai didi

mysql - 在联接中选择不同的记录

转载 作者:IT老高 更新时间:2023-10-29 00:14:10 26 4
gpt4 key购买 nike

我有两个 mysql 表 - 一个销售表:

+----------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------------------------+------+-----+---------+-------+
| StoreId | bigint(20) unsigned | NO | PRI | NULL | |
| ItemId | bigint(20) unsigned | NO | | NULL | |
| SaleWeek | int(10) unsigned | NO | PRI | NULL | |
+----------------+------------------------------+------+-----+---------+-------+

还有一个项目表:

+--------------------+------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+------------------------------+------+-----+---------+-------+
| ItemId | bigint(20) unsigned | NO | PRI | NULL | |
| ItemName | varchar(100) | NO | | NULL | |
+--------------------+------------------------------+------+-----+---------+-------+

sales 表包含每个 ItemID 的多条记录 - 每个 SaleWe​​ek 一条记录。我想通过像这样加入两个表来选择所有出售的商品:

SELECT items.ItemName, items.ItemId FROM items
JOIN sales ON items.ItemId = sales.ItemId
WHERE sales.StoreID = ? ORDER BY sales.SaleWeek DESC;

但是,这会根据每个 SaleWe​​ek 的多个条目返回多个 ItemId 值。我可以做一个独特的选择只返回一个 ItemID - 我不想查询最新的 SaleWe​​ek 因为有些项目可能没有最新的条目SaleWe​​ek 所以我需要获得最后一笔销售。我是否需要指定 DISTINCT 或使用 LEFT OUTER JOIN 或其他什么?

最佳答案

DISTINCT 应该可以满足您的需求:

SELECT DISTINCT items.ItemName, items.ItemId FROM items
JOIN sales ON items.ItemId = sales.ItemId
WHERE sales.StoreID = ? ORDER BY sales.SaleWeek DESC;

这将只返回不同的 items.ItemName, items.ItemId 元组。

关于mysql - 在联接中选择不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2068515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com