gpt4 book ai didi

mysql - 非常奇怪的 MySQL 结果

转载 作者:行者123 更新时间:2023-11-30 23:45:07 25 4
gpt4 key购买 nike

有人能解释一下吗……在我做出 promise 之前?第一个结果集应该有两个结果,和第二个结果一样,不是吗?

mysql> SELECT * FROM kuru_footwear_2.customer_address_entity_varchar
-> WHERE attribute_id=31 AND entity_id=324134;

+----------+----------------+--------------+-----------+-------+
| value_id | entity_type_id | attribute_id | entity_id | value |
+----------+----------------+--------------+-----------+-------+
| 885263 | 2 | 31 | 324134 | NULL |
+----------+----------------+--------------+-----------+-------+
1 row in set (0.00 sec)

mysql> SELECT * FROM kuru_footwear_2.customer_address_entity_varchar
-> WHERE value_id=885263 OR value_id=950181;
+----------+----------------+--------------+-----------+-------+
| value_id | entity_type_id | attribute_id | entity_id | value |
+----------+----------------+--------------+-----------+-------+
| 885263 | 2 | 31 | 324134 | NULL |
| 950181 | 2 | 31 | 324134 | NULL |
+----------+----------------+--------------+-----------+-------+
2 rows in set (0.00 sec)

attribute_id 是一个 SMALLINT(5)

entity_id 是一个 INT(10)

最佳答案

问题是您在 (entity_id,attribute_id) 上有一个唯一索引。当您编写其 WHERE 子句被索引覆盖的查询时,查询优化器会注意到这一点,并且只返回 1 行,因为索引的唯一性意味着最多有一个匹配行。

我不确定您一开始是如何获得这些重复项的,似乎表格中的某些内容已损坏。向表添加唯一索引通常会删除所有重复项。事实上,这通常被建议作为一种去除表中重复项的方法,请参阅 How do I delete all the duplicate records in a MySQL table without temp tables .

关于mysql - 非常奇怪的 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42261036/

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