mysql where子句中按索引引用列

mysql where子句中按索引引用列,mysql,sql,where-clause,ordinals,Mysql,Sql,Where Clause,Ordinals,我的数据库中的所有表都始终有一个id autoincrement,在第0列,无论其名称如何,它始终在那里 所以,在表teste中,我可能有idTeste,在表cars中,我应该有idCars,但是格式不是标准的,我可以有一个表示例,其中一个列简单地称为id 我正在尝试创建一个通用更新,如: update tablename set bla='ble' where column[0]='id'; 所以,不管列的名称如何,我希望通过它的id引用它。这可能吗 我知道我可以做一些事情,比如: show

我的数据库中的所有表都始终有一个id autoincrement,在第0列,无论其名称如何,它始终在那里

所以,在表teste中,我可能有idTeste,在表cars中,我应该有idCars,但是格式不是标准的,我可以有一个表示例,其中一个列简单地称为id

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

update tablename set bla='ble' where column[0]='id';
所以,不管列的名称如何,我希望通过它的id引用它。这可能吗

我知道我可以做一些事情,比如:

show columns from table

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

您所追求的是顺序位置,或者简单地说是顺序位置

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

…它依赖于SELECT子句中列出的列。有些支持GROUPBY子句中的序数


也就是说,不建议使用序数,因为它取决于SELECT子句中列的顺序。如果订单在没有更新order BY/etc的情况下发生更改,您将在运行时才能知道。

是的,我认为这是不可能的。我发现了一种通过其序号位置获取列名的方法,但我无法在updatewhere子句中使用它。我使用了从信息模式中选择列名称。表名称=mytable和序号位置=1的列,但类似于更新SQLstat set Script=buga,从信息模式中选择列名称。表名称=SQLstat和序号位置=1=12的列不起作用。。。我将保留我当前的解决方案。。。非常感谢。
ORDER BY 2, 1