MySQL复杂的IF语句

时间:2012-05-21 18:54:33

标签: php mysql

当然这很容易,但如果能让它发挥作用,该死的。

基本上想要做以下事情:(显然这不是有效的MySQL)

IF config.a = 1

THEN
UPDATE users SET something = 1
WHERE userlevel > 2

因此涉及两个表,但配置表和users表之间没有真正的连接。配置表有两列,值和设置。如果设置为“a”的行的值具有值“1”,我们只希望运行其余查询。所以它不像我们正在寻找的特定领域那么容易。

询问的原因是我需要在几个数据库中有条件地运行这个作为单个查询,这将比PHP依次连接到每个数据库更容易。

一如既往地感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

如果你真的想在一个查询中使用它,那就是:

UPDATE  u.users
CROSS JOIN
        (
        SELECT  1 AS r
        FROM    config
        WHERE   setting = 'a'
                AND value = 1
        ) q
SET     u.something = 1
WHERE   u.userlevel > 2

但是,当你需要做两个查询并且一个接一个地运行(或不运行)时,这是其中一种情况。

答案 1 :(得分:0)

UPDATE users u, 
(
 SELECT a FROM config
) c 
SET u.something = 1
WHERE 
    u.userlevel > 2 
AND c.a = 1

答案 2 :(得分:0)

我认为这适合你。

SELECT (
    UPDATE users SET something = 1 WHERE users.id = config.user_id
) AS updated
FROM config
WHERE userlevel > 2 AND config.a = 1

如果config具有userId,则可以使用,然后在子查询中使用该ID。