如果使用MySQL存在行,则获取列?

时间:2011-07-27 13:40:44

标签: mysql sql fetch

我有两张表photosale

photo有两列idurl

sale有两列photoIDstatus

问题是,photo表中的照片(行)不必在sale表中有记录,因此我们不知道照片是否在售。

photo

id | url

1  | http://...

2  | http://...

3  | http://...

sale

photoID | status

1       | 'sold'

3       | 'pending'

如您所见,id 2的照片在sale表格中没有记录。我想要做的是从photo表中提取所有照片,如果在sale表中有记录,我也希望status信息在一个查询中。我怎样才能做到这一点?

感谢。

2 个答案:

答案 0 :(得分:4)

   SELECT p.*, s.status 
     FROM photo p
LEFT JOIN sale s 
       ON p.id = s.photoID

答案 1 :(得分:0)

   SELECT p.*, s.status 
     FROM photo p
          INNER JOIN sale s 
             ON p.id = s.photoID
   UNION
   SELECT p.*, 'not on sale' AS status
     FROM photo p
    WHERE NOT EXISTS (
                      SELECT * 
                        FROM sale s
                       WHERE p.id = s.photoID
                     );