5

这个问题都是关于懒惰的......我想做这样的事情:

select some_func(some_col), * from my_table

所以我不必这样做:

select some_func(some_col), col_1, col_2... col_ad_infinitum from my_table

有什么方法可以使第一个查询起作用吗?这是我运行它时遇到的错误:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from my_table' at line 1
4

4 回答 4

10

您的意思是在 MySQL 中您的第一个查询:

SELECT some_func(some_col), * 
FROM my_table

产生这个错误?:

错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“*”附近使用正确的语法


您可以将代码更改为(这不会导致错误!):

SELECT *, some_func(some_col) 
FROM my_table

或者进入这个,如果你想先计算列:

SELECT some_func(some_col), t.* 
FROM my_table AS t
于 2011-09-27T21:05:31.137 回答
4

不幸的是,mysql 仅支持列列表开头的星号(与我熟悉的所有其他数据库不同)

(编辑:开始而不是结束- 哎呀!)

于 2011-09-27T20:52:53.177 回答
2

更改选择参数的顺序:

select *,some_func(some_col) from my_table

无论如何,正如Python 之禅所说:“显式胜于隐式”。始终尝试编写您选择的字段,如果可以尝试放置它们来自的表,您可以使用别名。你的未来你会感谢你的。

select t.some_col from my_table t
于 2011-09-27T21:22:57.927 回答
0

当我使用 PostgreSQL 执行此操作时,我得到我指定的列,然后是所有其他列(可能重复我指定的列)。

于 2011-09-27T20:51:16.257 回答