gpt4 book ai didi

mysql - 反引号和撇号之间的巨大区别是什么?

转载 作者:可可西里 更新时间:2023-11-01 06:31:41 24 4
gpt4 key购买 nike

以下两个查询给出截然不同的结果的原因是什么?

MariaDB [mydatabase]> SELECT COUNT(DISTINCT(`price`)) FROM `products`; --Good
+--------------------------+
| COUNT(DISTINCT(`price`)) |
+--------------------------+
| 2059 |
+--------------------------+
1 row in set (0.01 sec)

MariaDB [mydatabase]> SELECT COUNT(DISTINCT('price')) FROM `products`; --Bad
+--------------------------+
| COUNT(DISTINCT('price')) |
+--------------------------+
| 1 |
+--------------------------+
1 row in set (0.01 sec)

我在谷歌上搜索了反引号和撇号(又名单引号)之间的区别的解释,但我无法找到任何迹象说明为什么它们会像上面那样对列名称进行不同的解释。

是不是后一个查询中的单引号字符串实际上并没有被解释为列名,而只是被解释为任意字符串文字,其中可以说是“1”?如果是这样,就不容易找到任何阐述撇号含义的页面。

最佳答案

“价格”(撇号或引号)是一个字符串。它永远不会改变,因此计数始终为 1。

`price` (backtics) 指的是 price 列。所以它可能大于 1。

内括号无关紧要。 COUNT(DISTINCT price) 与您的 backtic 版本相同。

  • SELECT COUNT(*) FROM tbl WHERE ... 是询问有多少行的常用方法。
  • SELECT foo, COUNT(*) FROM tbl GROUP BY foo 是询问 foo 的每个不同值有多少行的常用方法。
  • SELECT foo, COUNT(foo) FROM tbl GROUP BY foo 与上面相同,但不计算 foo IS NULL 的行数。

SELECT DISTINCT ... GROUP BY ... 是一句废话。使用 DISTINCT 或使用 GROUP BY。

关于mysql - 反引号和撇号之间的巨大区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402361/

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