我有一个mysql表,如下所示:
## customer##
+-----------+----+---------+
|customer_id|name|telephone|
+-----------+----+---------+
| 1 |Andi|+62932011|
| 2 |Boby|+62928291|
| 3 |Jane|+62932212|
| 4 |John|+62999021|
| 5 |Beth|+62999021|
| 6 |Noel|+62999021|
+-----------+----+---------+
## plus_membership##
+-----------------+-----------+-------+------------+
|plus_membership_id|customer_id|status |requested_at|
+------------------+-----------+-------+------------+
| 1 | 1 | 1 | 2018-11-01 |
| 2 | 2 | 0 | 2018-11-03 |
| 3 | 4 | 2 | 2018-11-04 |
| 4 | 6 | 1 | 2018-11-05 |
+------------------+-----------+-------+------------+
在上面的结构中有两个表,第一个是 customer
与 customer_id
作为主键,第二个是 plus_membership
哪个有外键 customer_id
,的 plus_membership
表是一个表,用于显示客户请求成为plus会员时的请求、状态 1
表示客户被批准为plus会员。我需要选择customer表并添加alias列,假设alias列名是membership,只显示 regular
或者 plus
, plus
是指 plus_membership
状态为 1
,如果客户不在 plus_membership
表或状态无效 1
在成员表中。例如:
SELECT *, .... AS membership FROM customer;
+-----------+----+---------+----------+
|customer_id|name|telephone|membership|
+-----------+----+---------+----------+
| 1 |Andi|+62932011| Plus |
| 2 |Boby|+62928291| Regular |
| 3 |Jane|+62932212| Regular |
| 4 |John|+62999021| Regular |
| 5 |Beth|+62999021| Regular |
| 6 |Noel|+62999021| Plus |
+-----------+----+---------+----------+
2条答案
按热度按时间qyzbxkaa1#
你可以用
Left Join
在两张table之间,使用Case .. When
要计算的条件表达式membership
相应地。Left Join
将确保customer
表中是否有相应的匹配行plus_membership
不管是不是table。另一种方法是使用相关子查询和
Exists()
. 通常,这比左连接方法效率低。qqrboqgw2#
我们使用
EXISTS
或者IN
在另一个表中查找数据。