Select distinct records on a join
我有两个mysql表 - 一个销售表:
1 2 3 4 5 6 7 | +----------------+------------------------------+------+-----+---------+-------+ | 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 | | +----------------+------------------------------+------+-----+---------+-------+ |
和一个项目表:
1 2 3 4 5 6 | +--------------------+------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+------------------------------+------+-----+---------+-------+ | ItemId | bigint(20) unsigned | NO | PRI | NULL | | | ItemName | varchar(100) | NO | | NULL | | +--------------------+------------------------------+------+-----+---------+-------+ |
sales表包含每个ItemID的多个记录 - 每个SaleWeek一个记录。 我想通过加入两个表来选择所有出售的商品,如下所示:
1 2 3 |
但是,这将根据每个SaleWeek的多个条目返回多个ItemId值。 我可以做一个明确的选择只返回一个ItemID - 我不想要查询最新的SaleWeek,因为有些项目可能没有最新的SaleWeek的条目,所以我需要得到最后的销售。 我是否需要指定DISTINCT或使用LEFT OUTER JOIN或其他东西?
1 2 3 |
这将只返回不同的
你也有关于销售周的评论。 想要最近一周,您可能想尝试使用GROUP BY
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
如果您希望基于该列,则可能必须将ORDER BY更改为序数第3列引用。此查询将为您提供每个不同的项目以及销售的最近一周。
我们可以用这个:
1 2 3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT u.user_name,u.user_id, u.user_country,u.user_phone_no,ind.Industry_name,inv.id,u.user_email FROM invitations inv LEFT JOIN users u ON inv.sender_id = u.user_id LEFT JOIN employee_info ei ON inv.sender_id=ei.employee_fb_id LEFT JOIN industries ind ON ei.industry_id=ind.id WHERE inv.receiver_id='XXX' AND inv.invitation_status='0' AND inv.invitati on_status_desc='PENDING' GROUP BY (user_id) |