更新查询,如何从其他表中获取列名

Posted

技术标签:

【中文标题】更新查询,如何从其他表中获取列名【英文标题】:Update query, how to get column name from other table 【发布时间】:2014-06-28 12:03:01 【问题描述】:

我不知道这是否可能,但这就是我想要的:

UPDATE `tbl_users` SET (SELECT `category` FROM `tbl_items` WHERE id = ?) = (SELECT `item` FROM `tbl_items` WHERE id = ?) WHERE id = ? 

但这是不可能的,我在 php 中遇到了这个错误:

致命错误:在非对象中调用成员函数 bind_param()。

我想从 tbl_users 更新列名称在 tbl_items 中的列。

【问题讨论】:

用这个查询解释你想要什么? User table 和 Category table 如何相互关联 【参考方案1】:

我不确定我是否理解了您的问题,但是您是否可以先进行第一个查询,然后使用该查询的结果进行第二个查询?所以:

"SELECT `category`, `item` FROM `tbl_items` WHERE `id`=?"

然后将结果用于(假设该行保存在$row):

"UPDATE `tbl_users` SET `".$row['category']."` = '".$row['item']."' WHERE `id`=?

【讨论】:

你确实明白了 :) 但我已经知道了,这会起作用,但有可能在 1 个语句中做到吗? 据我所知,您只能使用子查询来设置值,而不是识别列。所以column = (SUBQUERY) 但不是(SUBQUERY) = (SUBQUERY) 谢谢!我会使用你的选择 别担心 :) 你看过这些吗? ***.com/questions/11588710/… 和 ***.com/questions/7216591/…【参考方案2】:

您可以在一个语句中使用它。你不需要两个查询和获取等等。

    UPDATE `tbl_users` 
    INNER JOIN `tbl_items`  ON `tbl_users`.id = `tbl_items`.id
    SET `tbl_items`.`category`  = `tbl_items`.`item` 
    WHERE `tbl_users`.id = ? 

【讨论】:

以上是关于更新查询,如何从其他表中获取列名的主要内容,如果未能解决你的问题,请参考以下文章

从具有特定值的表中获取列名

如何从 SQL 表中动态获取单元格值?

用于从 N 记录的其他表值更新值的 SQL 查询

如何从 SQL Server 中特定数据库的表中获取所有列名?

从 Firebird 数据库表中获取列名列表

如何通过SQL从IBM db2中的查询中获取列名