MySQL加入两个表,根据另一列的值

时间:2015-09-16 18:26:53

标签: mysql join null

我有两张桌子。“登录”和“acc_reg_num”。

“login”表有两列:'account_id'和'userid'。 (使用前缀“l”)
“acc_reg_num”有三个:'accound_id','key'和'value'。 (使用前缀“a”)

我需要将“a.value”列加入“login”表。根据“a.key”中的值:如果“a.key”为“SAMPLEVALUE”,则使用“a.value”中的值。 但是,如果“a.key”是[Anything else],那么在“a.value”中放置一个“0”而不是

我希望这很清楚。我当前的查询看起来像这样但它在“a.value”中显示重复的结果和值,无论“a.key”是否为“SAMPLEVALUE”。

SELECT l.account_id, l.userid, a.value AS 'CashPoints'
FROM login AS l
LEFT JOIN acc_reg_num AS a ON a.account_id = l.account_id

我也不需要重复l.account_id和l.userid列。

2 个答案:

答案 0 :(得分:1)

您可以将a.key='SAMPLEVALUE'条件添加到现有ON条件:

SELECT l.account_id, l.userid, COALESCE(a.value, 0) AS 'CashPoints'
FROM
  login AS l LEFT JOIN acc_reg_num AS a
  ON a.account_id = l.account_id AND a.key='SAMPLEVALUE'

如果没有SAMPLEVALUE,则连接不会成功且a.value将为NULL,那么您可以使用COALESCE来获取0而不是NULL。

答案 1 :(得分:0)

您可以使用CASE语句,例如

SELECT l.account_id, l.userid, 
CASE WHEN a.key = 'SAMPLEVALUE' THEN a.value ELSE '0' END AS 'CashPoints'
FROM login AS l
LEFT JOIN acc_reg_num AS a ON a.account_id = l.account_id
相关问题