0

確かにこれは簡単ですが、私がそれを機能させることができるかどうかは気の毒です。

基本的に次のことを行いたい: (明らかに、これは有効な MySQL ではありません)

IF config.a = 1

THEN
UPDATE users SET something = 1
WHERE userlevel > 2

したがって、関連するテーブルは 2 つありますが、config テーブルと users テーブルの間に実際の接続はありません。config テーブルには、値と設定の 2 つの列があります。残りのクエリは、設定が「a」の行の値が「1」の場合にのみ実行します。そのため、探している特定のフィールドがあるかのように簡単ではありません。

質問する理由は、これを条件付きで複数のデータベース間で単一のクエリとして実行する必要があるためです。これは、PHP が各 DB に順番に接続するよりもはるかに簡単な方法です。

いつもありがとうございます。

4

3 に答える 3

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

しかし、これは、2 つのクエリを実行し、次々に実行する (または実行しない) 必要がある場合の 1 つです。

于 2012-05-21T18:59:21.587 に答える
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 をサブクエリで使用します。

于 2012-05-21T19:05:50.987 に答える
0
UPDATE users u, 
(
 SELECT a FROM config
) c 
SET u.something = 1
WHERE 
    u.userlevel > 2 
AND c.a = 1
于 2012-05-21T18:57:36.877 に答える