SQL仅在满足条件时才加入

时间:2014-08-22 20:00:06

标签: mysql sql join

我有一个用户可以共享内容的网站。

我有一个名为“帖子”的表,有两列; "Type""Media""Type"列标识了它的帖子类型。即如果它包含任何照片或它只是一个普通的帖子。如果它包含照片,则"Type"列的值为"b",如果它是没有照片的空白帖子,则其值为"a"。如果"Type"的值等于"b",则"Media"列将具有ID整数,因为该值标识了附加到帖子的照片。

在单独的表格中,"Photos"每张上传的照片都会获得一个唯一ID。此唯一ID将放入"Media表中的"Posts"“值。

如果INNER JOIN的值等于SQL,我想在"Type"语法 ONLY 中执行"b"

任何人都可以帮我指出正确的方向吗?

4 个答案:

答案 0 :(得分:8)

听起来你真的想做Left JoinLeft Join将为您提供数据(如果存在),否则将显示照片的空数据。

也许是这样的:

Select *
From Posts
   Left Join Photos on Posts.MEDIA = Photos.MEDIA 
                    and Photos.Type = 'b'

如果这只是文字,它看起来像:

Type    Media    Photo
a       w/e
b       w/e      cats.jpg

答案 1 :(得分:1)

根据Philip的建议,最好的方法是使用外连接,但如果你真的想避免外连接,你需要使用子查询......

 SELECT Type,
    (Select case when p.type = 'p' 
            then photo [or whatever column you want] else null end 
     from Photos where id = p.Media) photo
 FROM posts p

答案 2 :(得分:0)

您可以在join声明中包含多个条件:

SELECT     *
FROM       posts
INNER JOIN photos ON posts.media = photos.id AND 
           posts.type = 'b'

答案 3 :(得分:0)

您正在寻找left join;类似下面的内容

select * from posts p
left join photos pp on p.media = pp.media
and p.type = 'b'