仅当关系存在时才更新SQL
我有批次和任务。在将一些任务批处理到另一批中时,我希望通过标记deleted=true来关闭所有现在为空的批。我尝试仅使用联接选择没有任务的批次:仅当关系存在时才更新SQL,sql,Sql,我有批次和任务。在将一些任务批处理到另一批中时,我希望通过标记deleted=true来关闭所有现在为空的批。我尝试仅使用联接选择没有任务的批次: SELECT id FROM batches INNER JOIN tasks on batches.id = tasks.batch_id where count(tasks.id) > 0 但这似乎不起作用。更改为外部联接。内部联接无法获取非匹配项 SELECT id FROM batches LEFT JOIN tasks on ba
SELECT id FROM batches INNER JOIN tasks on batches.id = tasks.batch_id where count(tasks.id) > 0
但这似乎不起作用。更改为外部联接。内部联接无法获取非匹配项
SELECT id FROM batches LEFT JOIN tasks on batches.id = tasks.id where tasks.id is null
如果我没有误解你的问题,这就是你要找的
UPDATE tbl
SET col=tbl.col
FROM tbl
INNER JOIN tbl1 ON tbl1.SomeCol=tbl.SomeCol
WHERE ......
如果两个表中的ID列都命名为“ID”,则还需要向表/列引用添加别名。另外,批处理ID是否与任务ID相同?因为根据join,它看起来是这样的,我猜这不是一对一的关系。*Facepalm。真不敢相信我居然没想到。。这就是外连接的作用,对吗?