MySQL: 无法在 SELECT 的开头添加常量字段。错误 1064

MySQL: cannot add constant field at start of SELECT. Error 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

如果我 select 只有一些列,它有效:

# 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             |
...

如果我将 * 用于 select 所有列,它也可以工作,但在它之后放置我的常量列:

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

我怎样才能SELECT 'some constant', * FROM my_table避免这个奇怪的错误?

* 使用 table 别名。我还将第一列作为名称:

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

MySQL 与其他值一起选择时,需要对 * 进行限定。

您只能使用 SELECT * 如果它是 SELECT 列表中的第一个。如果它与其他值混合在一起,则需要使用 table 名称或别名,

SELECT 'X', user.* FROM user;