Mysql多表UPDATE第一条记录

标签 mysql join sql-update

我在两个对象(用户 => 公司)之间有一个权限系统,其中有用于链接的表权限。现在我需要使用第一权限用户 ID 更新 firms 表。我提出了这个查询:

UPDATE parim_firms, parim_permissions
SET parim_firms.firm_user_id = parim_permissions.permission_a_id
WHERE parim_firms.firm_user_id = 0
    AND parim_firms.firm_id = parim_permissions.permission_b_id

现在,如果一个公司散列多个链接用户,那么它会使用第一个或最后一个匹配的用户进行更新吗?

我的逻辑是在第一次更新firm_user_id != 0后,该行不再更新。

但我不确定,也许它是否对所有连接的行运行查询,最后一行将保留。

如果没有,那么我如何修改查询以仅使用第一个匹配结果进行更新?

最佳答案

 UPDATE parim_firms 
 SET parim_firms.firm_user_id = 
  ( 
    select  parim_permissions.permission_a_id from parim_permissions 
    WHERE   parim_firms.firm_id = 0 
    AND parim_firms.firm_id = parim_permissions.permission_b_id 
 )

update parim_firms  a
set a.firm_user_id  = b.permission_a_id 
from  parim_permissions  b
WHERE   parim_firms.firm_id = 0 
    AND parim_firms.firm_id = parim_permissions.permission_b_id 

关于Mysql多表UPDATE第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010046/

相关文章:

sql - Oracle 更新更新 NULL 而不是值?

python - Flask sqlalchemy 更新限制

Mysql - 使用临时;使用文件排序

mysql - 显示 html 时遇到问题

java - 将 MySQL 数据库连接到 Android 应用程序

MySQL 多个 LEFT OUTER JOIN 错误

mysql - 如何在没有死锁的情况下批量更新 InnoDB 表?

mysql - c3p0 - hibernate - mysql

php - 使用 where 条件删除一个表并连接到多个表

sql - 如何编写 RIGHT OUTER JOIN 和 LEFT OUTER JOIN 的组合