我有一个用户可以共享内容的网站。
我有一个名为“帖子”的表,有两列; "Type"
和"Media"
。 "Type"
列标识了它的帖子类型。即如果它包含任何照片或它只是一个普通的帖子。如果它包含照片,则"Type"
列的值为"b"
,如果它是没有照片的空白帖子,则其值为"a"
。如果"Type"
的值等于"b"
,则"Media"
列将具有ID整数,因为该值标识了附加到帖子的照片。
在单独的表格中,"Photos"
每张上传的照片都会获得一个唯一ID。此唯一ID将放入"Media
表中的"Posts"
“值。
如果INNER JOIN
的值等于SQL
,我想在"Type"
语法 ONLY 中执行"b"
。
任何人都可以帮我指出正确的方向吗?
答案 0 :(得分:8)
听起来你真的想做Left Join
。 Left 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'