可选AND在WHERE语句MySQL中

时间:2011-06-05 18:57:04

标签: mysql left-join

我正在尝试弄清楚如何允许AND语句中存在LEFT OUTER JOIN,因为在查看记录时该表是可选的。但是,我有一个没有文件的问题,并在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时,它会返回一条记录,但是当我离开它时,它不返回任何记录。

如果记录不包含文件记录,则不会返回任何内容。我需要它来检查它,如果没有文件,它应该仍然能够返回记录(没有文件)。

2 个答案:

答案 0 :(得分:5)

尝试将条件移动到join语句中,这样只有符合条件才会在行上加入

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;

答案 1 :(得分:0)

如果您不想强制使用该条件,请使用OR代替

WHERE 
  rec.record_id = 4928  
OR 
  f.file_approved = 1