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
我想要做的是添加一个额外的布尔列,如果 userprocess.id 不为 null,则将其设为 true,如果 null 则将 userid 11 设为 false ...最好的方法是什么?
我有两行在进程中,一个在用户进程中,但是这个查询只返回 1 行。我期望它返回 2 行,一个为真,另一个为假。
解决方案
您需要将您WHERE
的条件移动到条件中,因为它正在删除可能存在ON
的任何行(因为在这种情况下也会如此,因此测试将失败)。然后,您可以根据是否为 NULL 在输出中添加一个布尔列:userprocess.id
NULL
userprocess.userid
NULL
WHERE
userprocess.id
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
推荐阅读
- java - 这是java能做而c不能做的吗?
- python-3.6 - 使用 python psycopg2 在 postgres 中存储和检索 tgz 文件
- database - Neo4j 适合 BI 用途吗?
- python - 如何从 csv 文件中自动获取标题
- javascript - ReferenceError:全局未在 xml2js 中定义
- python-3.x - Python3字符串到数字
- kubernetes - StatefulSet 重新创建 pod,为什么?
- django - AWS CodePipeline - 部署到 Elastic Beanstalk 需要 18 小时。我如何取消它?
- javascript - 如何在 Express 中将价值从一条路线传递到另一条路线?
- android - 如何在 Android 的图层列表中调整位图图像的大小?