php - MySQL:where(如果存在除 0 之外的值 - 选择值;否则,选择 0)

标签 php mysql sql subquery

在 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/

相关文章:

mysql - 从mysql存储过程中的mysql结果集获取最后的结果

sql - sql查询中的动态列

sql - 授予对架构上任何表/ View 的选择

php - 如何使用 CodeIgniter 测试 Controller ?

php - 动态 FormRequest 验证 (Laravel)

mysql - 获取 : java. sql.SQLException:未知系统变量 'language' spring boot

mysql - 排序分组依据 - 选择 V​​S View

sql - Spark SQL 的累积非重复计数

php - 如何强制 jQuery UI 资源始终包含在 Yii2 中的 Bootstrap 插件资源之前?

php - 使用 exec() 运行 PhantomJS 时返回错误代码 127