列同时不能等于某个值(mysql)

时间:2017-03-01 16:35:15

标签: mysql sql

我有这张桌子:

+------+----------+-------------+
| id   | category | category_id |
+------+----------+-------------+
|  1   | 2        | 12          |
|  2   | 1        | 12          |
|  3   | 3        | 54          |
|  4   | 3        | 17          |
|  5   | 2        | 14          |
+------+----------+-------------+

我需要得到以下内容:
当category = 2时:category_id!= 12

+------+----------+-------------+
| id   | category | category_id |
+------+----------+-------------+
|  2   | 1        | 12          |
|  3   | 3        | 54          |
|  4   | 3        | 17          |
|  5   | 2        | 14          |
+------+----------+-------------+

此代码不起作用:

SELECT * FROM `table` WHERE `category`!=2 AND `category_id`!=12

1 个答案:

答案 0 :(得分:0)

我想你想要OR

select *
from `table`
where `category` != 2
    or `category_id` != 12

根据De Morgan's law,与:

相同
select *
from `table`
where not (
        `category` = 2
        and `category_id` = 12
        )

读取 - 获取所有行,除非类别为2且category_id为一行中的12

相关问题