0
的某些部分如何做检查,如果特定列null,则忽略查询的某些部分如何做检查,如果特定列null,则忽略查询
我想要得到的结果包括这两个行,但低于查询,如果user_id
为null,则不行
SELECT
mc.* FROM media_credit mc
LEFT JOIN credit c ON c.id = mc.credit_id
LEFT JOIN "user" u ON u.id = mc.user_id
LEFT JOIN "user" _u ON u.id = c.create_by_user_id
WHERE mc.media_id = $1
c.status = $2
AND u.status = $2 // how to make if mc.user_id is null then dont use this
AND _u.status = $2
表
media_credit
id | media_id | credit_id | username | user_id
1 | 1 | 1 | xx | null
2 | 1 | 1 | null | 1
user
id | status
1 | 0
credit
id | status | create_by_user_id
1 | 0 | 32
感谢的答复是什么,然后$ 2的含义?这是否意味着如果'WHEN mc.user_id是NULL'什么也不做?但为什么输入一个参数? – user1575921
仅供参考......我最喜欢费利克斯的回答。 2美元没有特别的意义。这是你原来的问题。技巧是$ 2 = $ 2或0 = 0或'x'='x',这样当mc.user_id为NULL时AND子句基本上被忽略。 –