mysql - 如何从 MariaDB 的不同表更新多个列

标签 mysql sql database mariadb

我正在使用 MariaDB。我正在尝试更新 SELECT 不同表中的两列。

UPDATE User U
SET 
    U.UserPoint = (
        SELECT  ((SELECT COUNT(*) 
                FROM CARD_COMM R
                WHERE R.Card_ID = C.Card_ID) * 3
                +
                (SELECT COUNT(*)
                FROM SECTION_CARD_LIKE L
                WHERE L.Card_ID = C.Card_ID) * 1) as userPoint
                FROM CARD C WHERE C.userid = U.userid ORDER BY userPoint DESC limit 1 )

这有效

UPDATE User U
SET 
    (U.UserPoint, U.Card) = (
        SELECT  ((SELECT COUNT(*) 
                FROM CARD_COMM R
                WHERE R.Card_ID = C.Card_ID) * 3
                +
                (SELECT COUNT(*)
                FROM SECTION_CARD_LIKE L
                WHERE L.Card_ID = C.Card_ID) * 1) as userPoint,
                C.Card_ID as card
                FROM CARD C WHERE C.userid = U.userid ORDER BY userPoint DESC limit 1 )

但这并没有......

我该怎么做? 请帮助我...

最佳答案

使用多表更新,例如

UPDATE User
    JOIN ( SELECT userid, up_value, card_value ... ) AS x
        ON x.userid = User.userid
    SET User.UserPoint = x.up_value,
        User.Card = x.card_value;

(针对 up_value 和 card_value 使用合适的表达式/子查询/等)

您似乎正在更新 User 中的所有行?

关于mysql - 如何从 MariaDB 的不同表更新多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40037583/

相关文章:

php - SQL中按2个条件排序?

php - php deg2rad() 是否等于 mysql radians()

database - 从头开始为客户管理创建数据库

sql-server - 分层组的数据库架构

MySQL 查询 - 比较版本号

java - 类似 Hibernate 的转义字符查询

php - 在mysql数据库中搜索内容

sql - SSRS - 如何使 IIF 语句忽略无效值

mysql - 是否有 MySQL 选项/功能来跟踪记录更改的历史记录?

javascript - 如何将 JavaScript 输出作为 POST 请求传递给 PHP? 【使用js获取TZ然后发送到mySQL】