MySQL 如果存在左外连接

标签 mysql

我有一个这样的查询:

 SELECT process.id, name, item, file, sort, userprocess.id 
 FROM `process` 
 left outer join userprocess ON userprocess.processid = process.id 
 WHERE userprocess.userid = 11

我想做的是添加一个额外的 bool 列,如果 userprocess.id 不为 null,则为 true,如果为 null,则 userid 11 为 false...执行此操作的最佳方法是什么?

我有两行正在处理中,一行在用户进程中,但此查询仅返回 1 行。我期望它返回 2 行,一行为 true,另一行为 false。

最佳答案

您需要将 WHERE 条件移至 ON 条件,因为它会删除 userprocess.id 可能为 的所有行NULL (在这种情况下,userprocess.userid 也将是 NULL,因此 WHERE 测试将失败)。然后,您可以根据 userprocess.id 是否为 NULL 向输出添加 bool 列:

 SELECT process.id, name, item, file, sort, userprocess.id, 
        userprocess.id IS NOT NULL AS userprocess_exists
 FROM `process` 
 LEFT OUTER JOIN userprocess ON userprocess.processid = process.id
                            AND userprocess.userid = 11

关于MySQL 如果存在左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56087165/

相关文章:

mysql - Apache Airflow - MySQL 到 BigQuery - 如何获取上个月的数据?

php - 如何打印时间表以避免重复日期?

C# MySQL 参数 : ? 或 @

mysql - mysql中使用case将列值转换为行值

mysql - Docker 容器、内存消耗和日志

php - 如何将值插入到有空格的表列中 php 和 mysql

MySQL 值对的唯一键/约束,无论它们位于哪一列

mysql - 什么网络框架提供基于表关系和外键的自动数据库脚手架?

MySQL更新语句

javascript - 使用 reCAPTCHA 检查登录不起作用