MySQL显示值为NULL或等于X的行

MySQL显示值为NULL或等于X的行,mysql,select,null,Mysql,Select,Null,userPosts.value可以包含两个值之一:0或1 我将userPosts加入到我的Posts表中 我想从userPosts.value=0的posts表中获取所有posts,以及根本没有任何userPosts.value的所有posts(因此为NULL) 以下仅获取value=0但不为NULL的帖子: SELECT * FROM $wpdb->posts LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID) W

userPosts.value可以包含两个值之一:0或1

我将userPosts加入到我的Posts表中

我想从userPosts.value=0的posts表中获取所有posts,以及根本没有任何userPosts.value的所有posts(因此为NULL)

以下仅获取value=0但不为NULL的帖子:

SELECT * FROM $wpdb->posts
LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID)
WHERE userPosts.value != 1
ORDER BY $wpdb->posts.post_date DESC
以下内容仅获取value=NULL的帖子:

SELECT * FROM $wpdb->posts
LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID)
WHERE userPosts.value IS NULL
ORDER BY $wpdb->posts.post_date DESC
但这根本不会产生任何结果:

SELECT * FROM $wpdb->posts
LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID)
WHERE userPosts.value = 0
AND userPosts.value IS NULL
ORDER BY $wpdb->posts.post_date DESC
这确实让我得到了value=0和NULL的帖子,但它会重复我所有的NULL帖子三次

SELECT * FROM $wpdb->posts
LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID)
WHERE userPosts.value = 0
OR userPosts.value IS NULL
ORDER BY $wpdb->posts.post_date DESC
那么我做错了什么呢?

(x=0)和(x为空)
-一个字段不能同时是两个值。毫无疑问,您没有得到任何结果,因为您指定了一个不可能满足的where条件


至于查询的其余部分。您可以使用
$wdpd->posts
作为源表,但在where子句中使用名为
usercontracts
的表。$wpdb->posts是否解析为用户竞争?如果是这样,为什么要在一个位置将表名动态化,并在另一个位置对其进行硬编码?

尝试在
条件
上使用parenthasis(usercontestics.value=0或usercontestics.value为NULL)


您在标题中部分回答了自己的问题:或否和,但请尝试使用
DISTINCT

SELECT DISTINCT * FROM $wpdb->posts -- Note "DISTINCT"
LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID)
WHERE userContests.value = 0
OR userContests.value IS NULL -- Note "OR"
ORDER BY $wpdb->posts.post_date DESC
SELECT DISTINCT * FROM $wpdb->posts -- Note "DISTINCT"
LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID)
WHERE userContests.value = 0
OR userContests.value IS NULL -- Note "OR"
ORDER BY $wpdb->posts.post_date DESC