mysql中的连接条件需要忽略空字段
我有两张桌子:post,post\u image 我目前正试图像这样加入他们:mysql中的连接条件需要忽略空字段,mysql,sql,join,Mysql,Sql,Join,我有两张桌子:post,post\u image 我目前正试图像这样加入他们: $sql = 'SELECT post.*, post_image.name AS img FROM post, post_image WHERE post_image.postId=post.id LIMIT 10'; 这是我的问题。有些帖子在post_图像中没有任何条目,但我仍然需要返回它们。我知道mysql可以检查null,但我不确定如果这是解决方案,它会出现在我的语句中。我也不完全确定我能用我正在使用的速
$sql = 'SELECT post.*, post_image.name AS img FROM post, post_image
WHERE post_image.postId=post.id LIMIT 10';
这是我的问题。有些帖子在post_图像中没有任何条目,但我仍然需要返回它们。我知道mysql可以检查null,但我不确定如果这是解决方案,它会出现在我的语句中。我也不完全确定我能用我正在使用的速记连接做到这一点
请帮忙:)
编辑:
现在,这就像预期的那样工作,但是我还需要确保它只提取字段ordinal=0的post_图像,因为可以有多个post_图像条目。我尝试添加一个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
像这样使用
LEFT JOIN
:
SELECT
post.*,
post_image.name AS img
FROM post
LEFT JOIN post_image ON post_image.postId = post.id
LIMIT 10;
您的查询是internaljoin
,这两个表使用旧的连接语法,该语法使用WHERE
子句指定连接条件。最好在以后的查询中使用显式的JOIN
语法,而不是使用internaljoin
条件
有关更多信息:
左连接
:
SELECT
post.*,
post_image.name AS img
FROM post
LEFT JOIN post_image ON post_image.postId = post.id
LIMIT 10;
您的查询是internaljoin
,这两个表使用旧的连接语法,该语法使用WHERE
子句指定连接条件。最好在以后的查询中使用显式的JOIN
语法,而不是使用internaljoin
条件
有关更多信息:
- 使用
左连接如何?我认为它会显示帖子,虽然它没有图片
SELECT * FROM post p LEFT JOIN post_image pi ON p.id = pi.postId
使用左连接怎么样?我认为它会显示帖子,虽然它没有图片
SELECT * FROM post p LEFT JOIN post_image pi ON p.id = pi.postId
很抱歉进行编辑,我通过向联接中添加AND而不是WHERE解决了该部分。很抱歉进行编辑,我通过向联接中添加AND而不是WHERE解决了该部分WHERE@Helto-将此条件移动到ON
子句,不在中,其中如下:。。。在post_image.postId=post.id和post_image.ordinal=0 LIMIT 10
@Helto-将此条件移动到中不在的子句中,如下所示:。。。ON post_image.postId=post.id和post_image.ordinal=0限制10