2012-03-24 48 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

相关问题