【发布时间】:2021-06-25 00:23:45
【问题描述】:
是否可以编写如下查询?
UPDATE sale SET sale_order='123456789' WHERE **COLUMN_1** = 2
我没有明确传递列名?只有它的位置?
我可以获取列名,但我试图避免仅仅为了获取它们而查询数据库。
谢谢。
【问题讨论】:
标签: mysql
是否可以编写如下查询?
UPDATE sale SET sale_order='123456789' WHERE **COLUMN_1** = 2
我没有明确传递列名?只有它的位置?
我可以获取列名,但我试图避免仅仅为了获取它们而查询数据库。
谢谢。
【问题讨论】:
标签: mysql
要回答您的问题,不,SQL 中没有通过位置引用列的语法。这可以追溯到关系理论,在某种意义上,表是列的集合,集合的成员是无序的。
您要么必须知道列名,要么从数据库中查询它:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='sale'
AND ORDINAL_POSITION=1;
假设第一列是主键,您似乎正在尝试设计一个按主键更新行的查询。主键不一定是第一列。它不一定是整数。它不一定是单列。
因此,您已经在对表定义做出假设。您不妨假设主键列名为 id 或其他约定。
【讨论】: