我有一个这样的查询:
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/