我试图弄清楚如何在有 LEFT OUTER JOIN
的地方允许可选的 AND
语句,因为在查看记录时该表是可选的。但是,我有一个问题,就是没有文件,在 WHERE
语句中,像这样:
SELECT rec.record_id,
rec.record_name,
f.file_name,
f.file_id
FROM
(
records rec
LEFT OUTER JOIN files f ON f.record_id = rec.record_id
)
WHERE rec.record_id = 4928
AND f.file_approved = 1 <-- this is what returns a zero results
当我删除 AND f.file_approved = 1
时,它会返回一条记录,但当我离开它时,它不会返回任何记录。
如果记录不包含文件记录,则不会返回任何内容。我需要它来检查它,如果没有文件,它应该仍然能够返回记录(没有文件)。
最佳答案
尝试将条件移动到连接语句中,这样它只会连接满足条件的行
SELECT rec.record_id,
rec.record_name,
f.file_name,
f.file_id
FROM
(
records rec
LEFT OUTER JOIN files f ON f.record_id = rec.record_id AND f.file_approved = 1
)
WHERE rec.record_id = 4928;
关于mysql - MySQL WHERE 语句中的可选 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245102/