【问题标题】:How to update multiple columns from different table of MariaDB如何从 MariaDB 的不同表中更新多个列
【发布时间】:2016-10-14 07:38:39
【问题描述】:

我正在使用 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 )

但这个剂量不是......

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

【问题讨论】:

  • 不确定你想做什么?!在第一个示例中,您在一个列中插入一个值。在第二个示例中,您尝试相同,但指定两列但只指定一个值?

标签: mysql sql database mariadb


【解决方案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 中的所有行??

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2021-12-16
    • 1970-01-01
    • 2021-06-13
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多