开发者

does the existence of an asterisk in a select exclude other columns?

This question is all about laziness... I'd like to do something like this:

select some_func(some_col), * from my_table

So that I don't have to do this:

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

Is there any way to make the first query work? T开发者_如何学Gohis is the error I get when I run it:

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


Do you mean that in MySQL your first query:

SELECT some_func(some_col), * 
FROM my_table

produces this error?:

Error Code: 1064. 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 '*' at line 1


You can change your code into (this results in no errors!):

SELECT *, some_func(some_col) 
FROM my_table

or into this, if you want to have the calculated columns first:

SELECT some_func(some_col), t.* 
FROM my_table AS t


Unfortunately, mysql only supports the asterisk at the start of the column list (unlike every other DB I am familiar with)

(Edited: start not end - oops!)


Change the order of your select params:

select *,some_func(some_col) from my_table

Anyway, as the Zen of Python says: "Explicit is better than implicit". Always try to write the fields you're selecting, and if it's posible try to put the table they're from too, you can use an alias. Your future YOU will thank you.

select t.some_col from my_table t


When I do that with PostgreSQL, I get the column(s) I specify followed by all the other columns (possibly repeating the column(s) I specified).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜