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



我有两个表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信息,但在单个查询中。我该怎么做呢?

谢谢。

   SELECT p.*, s.status 
     FROM photo p
LEFT JOIN sale s 
       ON p.id = s.photoID
   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
                     );

相关内容

  • 没有找到相关文章

最新更新