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;
使用 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;