1

MySQLにdbがあり、2つのテーブルがあり、このようなクエリを作成する必要があります

SELECT a.*, b.* from db1.A a1 left join db2.A a2 using(id) where a1.email <> a2.email

だから私はテーブルに空でないemailフィールドがあり、彼らの電子メールがからの同じ人の電子メールと一致しない人を見つけて、からの電子メールを書きたいと思います。db1.Adb2.Adb1.Adb2.A

最初は

db1.A          db2.A
email          email
www@ww.ww      NULL

結果としてiiは取得したい

db1.A          db2.A
email          email
www@ww.ww      www@ww.ww

私はどんなスクリプト言語でもそれを作ることができます、しかしそれはSQLだけの助けを借りて(そのようなタスク)行うことができますか?

4

4 に答える 4

1

ISNULL式を使用してください!最初の引数が。の場合、2番目の引数を使用しますNULL

このようなもの:

SELECT a.*, ISNULL(b.columnName, a.columnName) as 'columnName'
from db1.A a1
left join db2.A a2 using(id)
where a1.email <> a2.email

を実際の列名に置き換えて、columnName必要なすべての列に対してそれを行う必要があります。

于 2012-06-08T12:18:42.030 に答える
1

更新ステートメントが必要です。

Mysql は更新に少し非標準の構文を使用します (私は忘れがちです)。正しい構文は次のとおりだと思います。

update db2
    from db1
    set db2.email = db1.email
    where db1.id = db2.id and (db2.email is null or db2.email <> db1.email)
于 2012-06-08T12:21:46.600 に答える
0

is not null条件で試しましたか?

SELECT a.*, b.* 
from db1.A a1 
left join db2.A a2 
using(id)
 where a1.email <> a2.email
and (a1.mail is not null and a2.mail is not)
于 2012-06-08T12:18:44.893 に答える
0

次のクエリで簡単に達成できるようです:

update db2.A a2, db1.A a1 set a2.email=a1.email where a1.id=a2.id and (db2.email is null or db2.email = '') and a1.email <> a2.email;

みんな、ありがとう。

于 2012-06-08T12:52:27.197 に答える