MySQL如果为true则添加SELECT和WHERE

时间:2012-05-10 12:14:47

标签: mysql if-statement

我有这样的查询:

SELECT tm.first_name, tm.last_name, tm.id, i.thumb 
FROM team_members tm, images i, tm_image tmi 
WHERE tm.id = tmi.tm_id AND tmi.image_id = i.id

效果很好,我找回了这个名字等以及通过这样的表链接到个人的图像:

individual_id -> individual_id - image_id <- image_id

问题是,如果个人没有附加图像,则查询不返回任何内容。我想要的是,如果没有图像数据,查询只返回NULL。我会使用if语句吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

你需要做一个LEFT JOIN来解决你的问题

SELECT tm.first_name, tm.last_name, tm.id, i.thumb 
FROM team_members tm
LEFT JOIN tm_image tmi ON (tmi.image_id = i.id)
LEFT JOIN images i ON (tm.id = tmi.tm_id);

未经测试,可能包含错误。

如果成员没有图片,则使用上面的查询tm.idi.thumb的值均为NULL

您可以在此处找到一些示例:http://phpweby.com/tutorials/mysql/32

答案 1 :(得分:2)

使用LEFT JOIN。像这样:

SELECT 
   tm.first_name, 
   tm.last_name, 
   tm.id, 
   i.thumb 
FROM 
 team_members tm
 LEFT JOIN tm_image tmi 
   ON tm.id = tmi.tm_id
 LEFT JOIN images i
   ON tmi.image_id = i.id
相关问题