【发布时间】:2011-01-05 07:50:34
【问题描述】:
我有两个 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 的多条记录 - 每个 SaleWeek 一条记录。我想通过像这样加入两个表来选择所有出售的商品:
SELECT items.ItemName, items.ItemId FROM items
JOIN sales ON items.ItemId = sales.ItemId
WHERE sales.StoreID = ? ORDER BY sales.SaleWeek DESC;
但是,这会根据每个 SaleWeek 的多个条目返回多个 ItemId 值。我可以做一个独特的选择只返回一个 ItemID - 我不想查询最新的 SaleWeek 因为有些项目可能没有最新的条目SaleWeek 所以我需要获得最后一笔销售。我是否需要指定 DISTINCT 或使用 LEFT OUTER JOIN 或其他什么?
【问题讨论】:
-
您尝试过 DISTINCT 吗?根据您使用的 DBMS,它可能会搞砸您的订购...
标签: mysql select join distinct