mysql where子句中的引用列由其索引构成

时间:2012-03-24 05:06:43

标签: mysql sql where-clause ordinals

我的数据库中的所有表总是有一个id(自动增量),在第0列,无论其名称如何,它始终存在。

所以,在表 teste 中我可能有 idTeste ,在表 cars 中我应该有 idCars ,但是格式不是标准格式,我可以使用一个表 example ,其中一列简称为 id

我正在尝试创建一个通用更新,如:

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

所以,列的名称无关紧要,我希望通过它的id来引用它。这可能吗?

我知道我可以这样做:

show columns from table

并在执行我的更新之前选择第一个名字,事实上,我这样做是为了解决我的问题,但我很好奇是否可能。

1 个答案:

答案 0 :(得分:2)

你所追求的被称为序数位置,或简称为“序数”。

SQL不支持在WHERE子句中使用序数。数据库供应商对序数的支持不同 - 最常见的支持在ORDER BY子句中:

ORDER BY 2, 1

...依赖于SELECT子句中列出的列。一些支持GROUP BY子句中的序数。

也就是说,使用序数不是推荐的做法,因为它取决于SELECT子句中列的顺序。如果在不更新ORDER BY / etc的情况下更改该顺序,则在运行时才会知道。