1

メール、名、姓などのユーザーに関する詳細を含む mysql に 2 つのテーブルがあります。

ログインしたユーザーを歓迎する方法を作成しましたが、問題は、2 つのテーブルの一部の値が類似しているため、重複が発生することです。異なるテーブルの値の違いを知りたいです。

このコードを試しましたが、うまくいきませんでした:

$query=  "SELECT * FROM Table1 WHERE email = '".$_SESSION['Email']."' NOT IN (SELECT email = '".$_SESSION['Email']."' FROM Table2)";  
4

2 に答える 2

1

クエリは次のとおりです。

SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' NOT IN (SELECT email = '".$_SESSION['Email']."' FROM Table2)

email = '".$_SESSION['Email']."'はブール式で、基本的に0or1です。

SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' and
      email NOT IN (SELECT email from Table2 where email = '".$_SESSION['Email']."')

比較は同じなので、これはより効率的に次のように記述されます。

SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' and
      not exists (SELECT email from Table2 where email = '".$_SESSION['Email']."')

email両方のテーブルでインデックスをオンにすると、パフォーマンスが向上します。

于 2013-07-23T01:03:29.143 に答える
0

2 つのテーブルのメール アドレスは同じですか? なんで?

テーブル1からのみセッションメールのユーザーデータが必要な場合は、これがおそらく解決策です。これを試してください:

$query = "SELECT t1.*, t2.* FROM table t1, table t2 WHERE t1.email <> t2.email AND t1.email = '".$_SESSION["Email"]."'";

推奨: 本当に必要なものを選択してみてください...メール、ユーザー名、名前など... SELECT *ではありません

于 2013-07-23T00:55:12.497 に答える