更新查询,如何从其他表中获取列名
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 = ?
【讨论】:
以上是关于更新查询,如何从其他表中获取列名的主要内容,如果未能解决你的问题,请参考以下文章