尝试使用以下语句从我的SQL表中加载数据
select `*` from `table_name`
不幸的是,它在MySQL 5.6.33 版本中引发了错误,而在 5.7.25 版本中则可以正常工作。
我对配置文件在哪里还是由于版本更改感到困惑,因为我无法找到有关上述内容的清晰文档。
此外,编写select语句的首选方式是什么?我是否应该选择``。
答案 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.6和MySQL 5.7的小提琴),尽管我无法执行以下操作,但允许以下表达式有效在任何地方都可以找到它。
SELECT `*` FROM `myTable`