我的数据库中的所有表总是有一个id(自动增量),在第0列,无论其名称如何,它始终存在。
所以,在表 teste 中我可能有 idTeste ,在表 cars 中我应该有 idCars ,但是格式不是标准格式,我可以使用一个表 example ,其中一列简称为 id 。
我正在尝试创建一个通用更新,如:
update tablename set bla='ble' where column[0]='id';
所以,列的名称无关紧要,我希望通过它的id来引用它。这可能吗?
我知道我可以这样做:
show columns from table
并在执行我的更新之前选择第一个名字,事实上,我这样做是为了解决我的问题,但我很好奇是否可能。
答案 0 :(得分:2)
你所追求的被称为序数位置,或简称为“序数”。
SQL不支持在WHERE子句中使用序数。数据库供应商对序数的支持不同 - 最常见的支持在ORDER BY
子句中:
ORDER BY 2, 1
...依赖于SELECT
子句中列出的列。一些支持GROUP BY
子句中的序数。
也就是说,使用序数不是推荐的做法,因为它取决于SELECT子句中列的顺序。如果在不更新ORDER BY / etc的情况下更改该顺序,则在运行时才会知道。