我有两张桌子。“登录”和“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列。
答案 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