2012-03-24 11 views
0

データベースのすべてのテーブルは、名前に関係なく常にカラム0にid(autoincrement)を持っていますが、常にそこにあります。mysqlの参照列whereインデックスの節

ので、テーブル内の精巣私はおそらくテーブルで、idTesteを持って、私はidCarsを持っている必要がありますが、フォーマットは標準ではありません、私は単純に列を持つテーブルを持つことができますidと呼ばれます。

は、私のような一般的な更新作成しようとしています:列の名前を重要ではありませんので、

update tablename set bla='ble' where column[0]='id'; 

を、私はそのidでそれを参照したいです。それは可能ですか?

私は私のような何かを行うことができます知っている:

show columns from table 

を、私の更新を実行する前に、最初の名前を選んで、そして、実際に、私は私の問題を解決するためにそれをしたが、それがあった場合、私は好奇心が強いです可能。

答えて

1

あなたが何をしているかは、序数位置、または単に「序数」と呼ばれます。

SQLでは、WHERE句での序数の使用がサポートされていません。序のサポートは、データベースベンダー間で異なります - 最も一般的なサポートがORDER BY句である:

ORDER BY 2, 1 

... SELECT節に記載されている列(複数可)に依存しています。一部はGROUP BY句の序文をサポートしています。

これは、序文を使用することは、SELECT句の列の順序に依存するため、推奨される方法ではありません。 ORDER BY/etcを更新せずにその注文が変更された場合、実行時まではわかりません。

+0

ええ、これは不可能だと思います。順序名で列名を取得する方法を発見しましたが、更新箇所where節では使用できませんでした。 TABLE_NAME = "mytable"とORDINAL_POSITION = 1'のように、info_schema.COLUMNSからselect COLUMN_NAMEを使用しましたが、 'update SQLstat set Script =" buga "のようなものです(where TABLE_NAME =" SQLstat "とORDINAL_POSITION = 1のinformation_schema.COLUMNSからCOLUMN_NAMEを選択してください) )= 12'は動作しません...私は現在のソリューションを維持します...ありがとう! –