MySQL:无法在SELECT开始时添加常量字段错误1064

问题描述

使用MariaDB v。10,我尝试在所有其他列SELECT之前添加自定义常量作为*查询的第一列。这将导致通用语法错误1064。

例如:

# mysql -u root -p$mypass -D mysql -e "SELECT 'X',* FROM user;"
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '* FROM user' at line 1

如果我只选择一些列,那么它会起作用:

# mysql -u root -p$mypass -D mysql -e "SELECT 'X',host,user FROM user;"
+---+-----------------+------------------+
| X | host            | user             |
+---+-----------------+------------------+
| X | 127.0.0.1       | root             |
| X | ::1             | root             |
...

如果我使用*选择所有列,但将我的常量列放在其后

# mysql -u root -p$mypass -D mysql -e "SELECT *,'X' FROM user;"  
... [long,correct output] ...

如何进行SELECT 'some constant',* FROM my_table以避免这种奇怪的错误?

解决方法

如果SELECT *SELECT列表中的第一件事,则只能使用。如果它与其他值混在一起,则需要使用表名或别名,

SELECT 'X',user.* FROM user;
,

*使用表别名。我也将第一列命名为:

SELECT 'X' as col,u.*
FROM user u;

在与其他值一起选择时,MySQL需要*的限定条件。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...