选择除基于 MySQL 中的两个字段之外的所有行

Posted

技术标签:

【中文标题】选择除基于 MySQL 中的两个字段之外的所有行【英文标题】:Select all rows except based on two fields in MySQL 【发布时间】:2011-06-16 04:12:25 【问题描述】:
SELECT * FROM table WHERE id != 4;
SELECT * FROM table WHERE NOT id = 4;
SELECT * FROM table WHERE id <> 4;

我已经完成了这一切,但我还必须选择另一个字段(或更多字段)来决定返回哪些行。

我怎样才能让它工作?

【问题讨论】:

您已经使用 * 选择了所有字段 - 所以我不清楚您的问题是什么。如果您询问这三种检查不平等的方法之间的区别,请参考以下答案:***.com/questions/7884/… 您问题的措辞有点不清楚,所以我试图澄清一下。请让我知道我是否已将其塞满以便修复。 【参考方案1】:

如果您想“取消选择”两个条件都为真(ID1 为 4,ID2 为 7)的列,请使用类似:

select * from TBL where ID1 <> 4 or ID2 <> 7;

ID1  ID2  selected
---  ---  --------
 4    7     no
 4    1     yes
 1    7     yes
 1    1     yes

如果您想“取消选择”任一条件为真(ID1 为 4 或 ID2 为 7)的列,请使用类似:

select * from TBL where ID1 <> 4 and ID2 <> 7;

ID1  ID2  selected
---  ---  --------
 4    7     no
 4    1     no
 1    7     no
 1    1     yes

这可以扩展到更多条件,只需将它们添加到where 子句的末尾(并将文本中的both/either 更改为all/any)。

【讨论】:

where both conditions are true 暗示AND @zerk:除了我们要取消选择它们,而不是选择它们——这会颠倒条件——我会添加真值表来澄清。 我会接受这个作为答案,因为这是我的想法。非常感谢。不过,我已经发布了我的问题的答案。【参考方案2】:

idAlbum!= 4 和idAlbum!= 8 的相册中选择 * 我刚刚解决了我的问题。谢谢大家的帮助!

【讨论】:

以上是关于选择除基于 MySQL 中的两个字段之外的所有行的主要内容,如果未能解决你的问题,请参考以下文章

除了键入选择 *。在 Mysql [重复]

在 BigQuery 中选择除 ARRAY_AGG + STRUCT 中的一列之外的所有内容

您可以选择除 1 或 2 个字段之外的所有内容,而不会出现作家抽筋吗?

如何使用 MySQL 查询从表中选择除一列之外的所有内容? [复制]

选择除两个 id 之外的所有正文元素 [重复]

从 Google BigQuery 中的选择中排除数组类型字段