【问题标题】:MYSQL query table using column position, NOT column nameMYSQL查询表使用列位置,而不是列名
【发布时间】:2021-06-25 00:23:45
【问题描述】:

是否可以编写如下查询?

UPDATE sale SET sale_order='123456789' WHERE **COLUMN_1** = 2

我没有明确传递列名?只有它的位置?

我可以获取列名,但我试图避免仅仅为了获取它们而查询数据库。

谢谢。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    要回答您的问题,不,SQL 中没有通过位置引用列的语法。这可以追溯到关系理论,在某种意义上,表是列的集合,集合的成员是无序的。

    您要么必须知道列名,要么从数据库中查询它:

    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='sale' 
      AND ORDINAL_POSITION=1;
    

    假设第一列是主键,您似乎正在尝试设计一个按主键更新行的查询。主键不一定是第一列。它不一定是整数。它不一定是单列。

    因此,您已经在对表定义做出假设。您不妨假设主键列名为 id 或其他约定。

    【讨论】:

    • 你说得对,我想通过主键更新一行。我数据库中的所有表都有一个数字主键作为第一列。我试图节省必须传递带有列名的参数。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 2021-01-24
    • 2011-08-21
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多