为什么我放= =可以带来正确的结果,而当我放!=则可以带我完整的列表,而不是其他列表。
SELECT *
FROM library, crime_data
WHERE crime_data.id=$oreo
AND crime_data.isbn != library.isbn
AND crime_data.visibility='0'
GROUP BY library.isbn
我究竟做错了什么?
的方式!=
和=
涉及很容易看到一个简单的例子:
SELECT
1=1,
1=2,
1=NULL,
NULL=NULL,
1<>1,
1<>2,
1<>NULL,
NULL<>NULL
(我使用的是标准<>
运算符,而不是MySQL特定的运算符!=
,但它们是等效的)。
+-----+-----+--------+-----------+------+------+---------+------------+
| 1=1 | 1=2 | 1=NULL | NULL=NULL | 1<>1 | 1<>2 | 1<>NULL | NULL<>NULL |
+-----+-----+--------+-----------+------+------+---------+------------+
| 1 | 0 | NULL | NULL | 0 | 1 | NULL | NULL |
+-----+-----+--------+-----------+------+------+---------+------------+
因此,行的crime_data.isbn = library.isbn
并集,其中和crime_data.isbn != library.isbn
不包含行总数;它排除了至少有一个NULL
运算符的所有行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句