【发布时间】:2019-11-22 08:08:29
【问题描述】:
基本上我有一个表,所有客户都会有一个默认行customer_group_id=0
但是这个客户中的一些将属于customer_group_id=1
当发生这种情况时,会为 customer_group_id=1 的客户创建一个新行,因此现在我有 2 行用于同一客户但不同的 customer_group_id。
现在,当我获取数据时,我首先需要从 customer_group_id =1 的客户表中选择 *,但如果不存在,则给我,然后使用 customer_group_id = 0 这是默认值,并继续直到它返回所有数据。
有人知道实现这一速度的最佳方法吗?
更新:屏幕截图显示 2 行具有相同 customer_id 不同 customer_group_id:
我需要一个或另一个,所以层次结构是:如果 customer_group_id=1 存在则返回该行并忽略其他,否则返回默认值 customer_group_id=0
我的完整查询:
SELECT `main_table`.*, `secondTable`.* FROM `customer` AS `main_table`
LEFT JOIN `customer_group` AS `secondTable` ON main_table.customer_id = secondTable.customer_id
WHERE (secondTable.customer_group_id = '1' )
AND (`secondTable`.`is_active` = '1')
【问题讨论】:
-
如果您想获取所有客户,为什么不只使用 select * from;并使用“distinct”子句避免重复?
-
听起来架构需要规范化。虽然你的问题缺乏细节。无论如何,您可以尝试以下方法:
SELECT * FROM your_table_name WHERE customer_id = $customer_id ORDER BY customer_group_id DESC LIMIT 1
标签: mysql sql if-statement conditional-statements