在SQL Server中,如果 nullParam=NULL在where子句中,它总是计算为false.这是违反直觉的,并且给我带来了许多错误.我确实理解IS NULL和IS NOT NULL关键字是正确的方法.但是为什么SQL服务器会以这种方式运行?
有什么区别
where x is null
Run Code Online (Sandbox Code Playgroud)
和
where x = null
Run Code Online (Sandbox Code Playgroud)
为什么后者不起作用?
我很惊讶地看到IS NULL和= NULL在select查询中产生不同的结果.他们之间有什么区别?什么时候用.如果你能详细解释我,我会很高兴的.
我在 MySQL 中有下表。
city_data
+------+-----------+-------------+
| id | city_code | city_name |
+------+-----------+-------------+
| 4830 | BHR | Bharatpur |
| 4831 | KEP | Nepalgunj |
| 4833 | OHS | Sohar |
| 4834 | NULL | Shirdi |
+------+-----------+-------------+
Run Code Online (Sandbox Code Playgroud)
和下面的查询。
从 city_data 中选择 id、city_code、city_name,其中 city_code != 'BHR';
我本来期待 3 排。
| 4831 | KEP | Nepalgunj |
| 4833 | OHS | Sohar |
| 4834 | NULL | Shirdi |
+------+-----------+-------------+
Run Code Online (Sandbox Code Playgroud)
但只得到 2 行。
| 4831 …Run Code Online (Sandbox Code Playgroud) 我试图使用自定义查询获取wp帖子.这是sql查询:
SELECT p.*, IFNULL(SUM(vote), 0) AS vote_count, CAST(m.meta_value AS SIGNED) AS idea_count
FROM wp_posts p
INNER JOIN wp_term_relationships r ON p.ID=r.object_id
INNER JOIN wp_term_taxonomy t ON t.term_taxonomy_id=r.term_taxonomy_id AND t.taxonomy='category'
LEFT JOIN wp_wdpv_post_votes v ON v.post_id=p.ID
LEFT JOIN wp_postmeta m ON m.post_id=p.ID AND m.meta_key='ideas_count'
WHERE p.post_status='publish' AND p.post_type='post' AND t.term_id='5'
GROUP BY p.ID
ORDER BY p.ID DESC
LIMIT 0, 8
Run Code Online (Sandbox Code Playgroud)
这个SQL查询工作正常.但现在我有另一个案例,我想要使用此查询显示帖子,但只显示没有特定元键的帖子.要过滤的Meta键是
'private_spaces_post'
Run Code Online (Sandbox Code Playgroud)
这可能是mysql查询特有的.但如果有人能为我解决这个问题,我将非常感激.