mysql 使用另一个表中的值更新表?

标签 mysql

我正在尝试使用其他表“supplier_change_request”中的值更新我的表“supplier_stats”。

我的两个表如下所示:

供应商变更请求

id   |   user_id   |   company_name   |   supplier_number
1        123           hewden             V0001

供应商统计

Id | user_id | company_name  |  address  |   reference   | supplier_number
1    123       pie              n/a          12345         V0001
2    145       gates            n/a          12345         V0002

这是我的 MySQL:

$reference = '12345'

$query = "UPDATE supplier_stats 
SET supplier_stats.company_name = (
    SELECT supplier_change_request.company_name 
    FROM supplier_change_request
    WHERE supplier_change_request.reference = '$reference' AND supplier_change_request.supplier_number = supplier_stats.supplier_number";
mysql_select_db('hewden1');
$retval = mysql_query( $query, $conn )

根据我的计算,这应该将我的表“supplier_stats”中的 company_name 的值设置为“hewden”,其中,supplier_number 为“V0001”。但是,company_name 并未更新。

有人可以告诉我哪里出错了吗?预先感谢您

最佳答案

我认为您的查询中的语法有点不对劲,它应该看起来像这样(只是 SQL,根据需要适应 PHP):

UPDATE supplier_stats ss
JOIN supplier_change_request scr ON scr.supplier_number = ss.supplier_number
SET ss.company_name = scr.company_name 
WHERE ss.reference = '$reference' 

reference 列指向示例查询中的 supplier_change_request,但指向示例数据中的 supplier_stats - 我假设示例数据是正确的;如果没有就改变。

此查询应将 supplier_stats 中的 company_namepie 更改为 hewden

关于mysql 使用另一个表中的值更新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28699311/

相关文章:

mysql - 复合索引和整数比较

php - SQLSTATE[42S02] : Base table or view not found: 1146 Table 'app.articles' doesn't exist (SQL: select * from `articles` )

mysql - 将最后几个单词移至同一列的前面

php - 如何在 PHP PDO 中执行算术运算?

mysql - 选择MySQL中varchar的最大值

mysql - 连接到 phpmyadmin 时出现错误消息

php - 我可以让 mysql 对它接收的数据类型不那么严格吗?

javascript - 如何将参数传递给回调函数内部

mysql - 触发器连接多个表

php - 获取要在表单中显示的数据