2012-03-24 84 views
0

我的數據庫中的所有表都始終有一個id(autoincrement),在列0處,不管名稱如何,它始終存在。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子句中使用它。我使用了''從information_schema.COLUMNS'中選擇COLUMN_NAME,其中TABLE_NAME =「mytable」和ORDINAL_POSITION = 1',但類似於'update SQLstat set Script =「buga」其中(選擇來自information_schema.COLUMNS的COLUMN_NAME,其中TABLE_NAME =「SQLstat」和ORDINAL_POSITION = 1 )= 12'不工作...我會繼續我目前的解決方案...謝謝! – 2012-03-25 05:37:29

相關問題