在mysql中加入条件需要忽略空字段

时间:2013-02-26 06:18:47

标签: mysql sql join

我有两张桌子:post,post_image

我目前正试图加入他们:

$sql = 'SELECT post.*, post_image.name AS img FROM post, post_image 
WHERE post_image.postId=post.id LIMIT 10';

这是我的问题。有些帖子在post_image中没有任何条目,但我仍然需要它们返回。我知道mysql可以检查null,但是我不知道如果那是解决方案,它会在我的语句中出现在哪里。我也不完全确定我能用我正在使用的速记连接来做到这一点。

请帮助:)

编辑:

现在正在按预期工作,但我还需要确保它只使用字段ordinal = 0拉取post_image,因为可以有多个post_image条目。我尝试添加一个WHERE子句,它似乎只用图片来拉帖子。这就是我所拥有的:

SELECT post.*, post_image.name AS img FROM post LEFT JOIN post_image ON post_image.postId=post.id WHERE post_image.ordinal=0 LIMIT 10

2 个答案:

答案 0 :(得分:5)

像这样使用LEFT JOIN

SELECT 
  post.*, 
  post_image.name AS img 
FROM post
LEFT JOIN post_image ON post_image.postId = post.id 
LIMIT 10;

您的查询是INNER JOIN两个表使用旧的连接语法,该语法使用WHERE子句指定连接条件。最好在将来的查询中使用JOIN条件来使用显式INNER JOIN语法。

了解更多信息:

答案 1 :(得分:1)

如何使用LEFT JOIN?我认为它会显示帖子,虽然它没有图像。

SELECT * FROM post p LEFT JOIN post_image pi ON p.id = pi.postId