2012-02-08 7 views
0

特定のユーザが自分のシステムにすでに存在していないことを確認したいと思います。未確認のユーザー(xymply_newusers)で確認したユーザー(xymply_users)と 新しいユーザ名が2つの別々のテーブルのどちらにも入っていないことを確認してください

  • 1を

    • 1:私は2つのテーブルを持っています。

    私は現在、どちらのテーブルにもないユーザー名を選択しているユーザーを確認したいと思います。

    SELECT * FROM xymply_users, xymply_newusers 
    WHERE xymply_users.user ='test' 
    OR xymply_newusers.user ='test' 
    

    が、ユーザーテストは "xymply_usersにあります場合には、このクエリでは表示されません、なぜ私は思ったんだけどない:私はこれを試してみましたか?

  • 答えて

    3

    UNIONを使用してください。

    (SELECT 1 FROM xymply_users WHERE xymply_users.user ='test') 
    UNION 
    (SELECT 1 FROM xymply_newusers WHERE xymply_newusers.user ='test') 
    

    ユーザーが存在する場合はレコードを1つ、存在しない場合はレコードを2つ、存在しない場合はレコードを2つ与えます。

    SELECT 1は単なる最適化です。それは

    +0

    SELECT *は通常、常に間違っている)完璧うん、SELECT *よりも高速です!ありがとう! – cerr

    1
    SELECT * FROM xymply_users.u, xymply_newusers.nu where u.username = nu.username 
    

    または

    SELECT * FROM xymply_users.u, xymply_newusers.nu where u.username = 'username' AND nu.username = 'username' AND u.username = nu.username 
    
    +0

    これは、同じユーザ名が__both__テーブルに存在するかどうかを識別しますが、OPはユーザ名が__either__テーブルに存在するかどうかを確認します。 –

    +0

    xymply_usersのユーザ名はxymply_newusersのユーザ名と等しくなります。 – tomexsans

    +0

    申し訳ありませんが、私はANDとXORを混同しているので、明らかに老い、老人になっています...私はOPがXORを望んでいるという印象を受けました。 ? –

    関連する問題