gpt4 book ai didi

mysql - 从表中选择其他列不匹配的行

转载 作者:行者123 更新时间:2023-11-30 22:54:58 25 4
gpt4 key购买 nike

我有这个 MySQL 表的列,它有大约 9000 行:

number | description | Bronze | Gold | Silver | Platinum

我如何选择列 GoldSilverPlatinum 的行不等于 Bronze

我试过:

SELECT * FROM `callplandata` WHERE `Silver` != `Bronze` AND `Gold` != `Bronze`

但它没有返回任何行,即使它应该返回:

number  description           Bronze  Silver  Gold
441 UK Local / National 1.2 0.893 0.7

最佳答案

您的查询看起来不错,但我发现字段周围的引号很奇怪。

原则是正确的 - 在 select 语句中,您可以使用 !==

将一个字段的值与另一个字段的值进行比较

也许发生了一些舍入,或者其他精度问题,这意味着您拥有的值看起来相同,但并不完全相等?您没有提及字段类型 - 它们是否可能相似但不等同的 float ,或者在您选择它们​​时四舍五入以降低精度?

还要注意 NULL 值,因为它们无法像您预期的那样进行数字比较。

我刚刚在本地运行了这段测试代码,一切如您所愿。请注意,我使用了固定的数字精度。

mysql> create table testit ( number int, description text, Bronze numeric(10,5), Silver numeric(10,5), Gold numeric(10,5), Platinum numeric(10,5) );
Query OK, 0 rows affected (0.07 sec)

mysql> insert into testit values (441,'UK Local / National',1.2 ,0.893,0.7, null ) ;
Query OK, 1 row affected (0.16 sec)

mysql> select * from testit;
+--------+---------------------+---------+---------+---------+----------+
| number | description | Bronze | Silver | Gold | Platinum |
+--------+---------------------+---------+---------+---------+----------+
| 441 | UK Local / National | 1.20000 | 0.89300 | 0.70000 | NULL |
+--------+---------------------+---------+---------+---------+----------+
1 row in set (0.00 sec)

mysql> SELECT * FROM testit WHERE Gold != Bronze AND Silver != Bronze;
+--------+---------------------+---------+---------+---------+----------+
| number | description | Bronze | Silver | Gold | Platinum |
+--------+---------------------+---------+---------+---------+----------+
| 441 | UK Local / National | 1.20000 | 0.89300 | 0.70000 | NULL |
+--------+---------------------+---------+---------+---------+----------+
1 row in set (0.00 sec)

关于mysql - 从表中选择其他列不匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26817606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com