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構文にエラーがあります。1行目の「*」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。


コードを次のように変更できます(これによりエラーは発生しません!):

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 は列リストの最初のアスタリスクしかサポートしていません (私がよく知っている他のすべての DB とは異なります)。

(編集:終了ではなく開始- おっと!)

于 2011-09-27T20:52:53.177 に答える
2

選択したパラメータの順序を変更します。

select *,some_func(some_col) from my_table

とにかく、PythonのZenが言うように、「明示的は暗黙的よりも優れています」。常に選択しているフィールドを書き込もうとします。可能であれば、それらのフィールドからのテーブルも入れてみてください。エイリアスを使用できます。あなたの将来あなたはあなたに感謝します。

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

PostgreSQL でこれを行うと、指定した列に続いて他のすべての列が取得されます (指定した列が繰り返される可能性があります)。

于 2011-09-27T20:51:16.257 に答える