MySQL select语句不适用于*

时间:2019-04-25 11:11:44

标签: php mysql

尝试使用以下语句从我的SQL表中加载数据

select `*` from `table_name`

不幸的是,它在MySQL 5.6.33 版本中引发了错误,而在 5.7.25 版本中则可以正常工作。

我对配置文件在哪里还是由于版本更改感到困惑,因为我无法找到有关上述内容的清晰文档。

此外,编写select语句的首选方式是什么?我是否应该选择``

1 个答案:

答案 0 :(得分:2)

简短的回答:无需将您的*括起来,实际上可能会产生误导,或引起错误。

在MySQL手册中,

  

标识符引号是反引号(`)

这基本上意味着,凡是带有引号的引用,都应解释为列或表。

*是运算符-不是表或列。该运算符基本上说将表的所有列都给我。当你做...

`*`

..您基本上是在要求MySQL捕获具有确切名称*的列的值,而不是使用实际的运算符*来给您所有列。

SELECT * FROM `myTable`   -- Selects all columns
SELECT `*` FROM `myTable` -- Tries to select the column with the actual name of *

显然有一个名为*的列是一个非常糟糕的主意。


这很有趣,因为在5.6版和5.7版之间发生了一些变化(请参见MySQL 5.6MySQL 5.7的小提琴),尽管我无法执行以下操作,但允许以下表达式有效在任何地方都可以找到它。

SELECT `*` FROM `myTable`