2017-12-14 1 views
0

SQL結果の最初の位置にシリアル番号が必要です。テーブルからすべてのデータを選択してシリアル番号を生成するにはどうすればよいですか?

は、私が働いているいくつかの同様のソリューション、発見した:

select *,@a:[email protected]+1 serial_number from tableName,(SELECT @a:= 0) AS a; 

を私はそこにあるので、あなたはあなたのSQLクエリでシリアル番号を生成する必要はありません

select @a:[email protected]+1 serial_number,* from tableName,(SELECT @a:= 0) AS a; 

serial_number|Name |... 
--------------------------------- 
    1   | Abc |... 
    2   | Def |...  
    3   | Ghi |... 
    4   | Jkl |... 
    5   | Mno |... 
+0

すなわち...フィールドの順序は、注文あなたに基づいて表示されます"名前"を選択した –

+0

を入れたのは単なる例です。私はその後にドットを打ちました。つまり、もっと多くの列が表示されます(すべての列)。 –

+0

2番目のクエリが期待どおりの結果を返します。どうした? –

答えて

0

を期待していあなたのために仕事をするデータベースストレージの機能を内蔵しています。

serial_numberのdatafieldを、デフォルト値AUTO_INCREMENTPRIMARY KEYにするだけです。

データベースは:)あなたのため

CREATE TABLE Employee 
(
serial_number INT PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(100) NOT NULL, 
. 
. 
) 

をユニークな値を管理します。そして、あなたは生きてそれを参照してください。単純なクエリ

SELECT serial_number, * FROM tableName; 

を実行します:複数の列がテーブルにhttp://sqlfiddle.com/#!9/87c45/2

+0

であっても、異なるSNを持つことができます。becoz *は後で使用できません。ちなみに 私の質問は、選択したクエリでシリアルナンバーを生成することです。 :) –

0

どこ結果セットの列の順序を変更する必要があるのは、列の名前を指定するだけです。同じテーブルからすべての列を一覧表示するにはちょうどdot*続いtable nameを使用し、私はあなたの問題が何であるかを理解していないtableName.*

SELECT serial_number, name, tableName.* FROM tableName; 
+0

今、これは私が欲しいものです、それは働いています、ありがとうございます。 –

+0

大丈夫ですこの種の問題の解決策であることを他のユーザーが知るためには、解決策を受け入れてください。 – ino

関連する問題