在 mysql 的 where 子句中,“where userID = SOME_VALUE;如果未找到 SOME_VALUE - 选择 0”。
怎么做?
我尝试了条件子选择,它有效,但相当复杂:
"SELECT * FROM table_descriptors
WHERE
tTable = :table_obj_table
AND approvalTable = :approval_table
AND (
CASE WHEN
IFNULL(( FIND_IN_SET( :user_id2,
( SELECT GROUP_CONCAT(userID) FROM table_descriptors
WHERE tTable = :table_obj_table2
AND approvalTable = :approval_table2
) ) ), 0) = 0
THEN userId = '0'
ELSE userId = :user_id
END
) LIMIT 1";
子选择 group_concats 用户 id,如果在集合中找不到用户 id - 选择 userId = 0。否则,选择当前用户 id。 IFNULL 将 NULL 转换为 0,以防万一。
它可以工作,但是还有其他没有“硬”子选择的“简单”场景吗?
最佳答案
如果我理解正确的话,当用户 id 不存在时,您需要用户 id 0。如果是这样,您可以使用更简单的查询:
SELECT td.*
FROM table_descriptors td
WHERE td.tTable = :table_obj_table AND
td.approvalTable = :approval_table AND
td.userId IN (0, :user_id)
ORDER BY (td.userId = 0) DESC
LIMIT 1;
关于php - MySQL:where(如果存在除 0 之外的值 - 选择值;否则,选择 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47391804/