どのようにして各テーブルをフィルタリングした後に2つのテーブルを結合し、フィルタ結果を得るには両方の結果を結合しますか?フィルタリング後に2つのテーブルを結合するにはどうすればいいですか?
しようとしましたが、コード
SELECT *
FROM Table1
WHERE flag1 = 0
JOIN SELECT *
FROM TABLE2
where flag2 = 0 on Table1.email = TABLE2.email
どのようにして各テーブルをフィルタリングした後に2つのテーブルを結合し、フィルタ結果を得るには両方の結果を結合しますか?フィルタリング後に2つのテーブルを結合するにはどうすればいいですか?
しようとしましたが、コード
SELECT *
FROM Table1
WHERE flag1 = 0
JOIN SELECT *
FROM TABLE2
where flag2 = 0 on Table1.email = TABLE2.email
は、サブクエリなどの2つの選択ステートメント、および2つの異なるテーブルとしてこれら二つのサブクエリの結果と参加してみてくださいを考えてみましょう。
SELECT * FROM
(SELECT * FROM Table1 where flag1 = 0) Table1
JOIN
(SELECT * FROM TABLE2 where flag2 = 0) Table2
on Table1.orderlist_email = TABLE2.email
ありがとうございました... –
SELECT *
FROM Table1 as t1
join Table2 as t2 on t1.orderlist_email = t2.email
where flag1 = 0
and flag2 = 0
正しい構文エラーを示すが、このようになります参加します。
flag2はどこですか? – Sami
@Sam:主に答えはjoinとwhere句に関連していました。とにかく私は答えを更新しました –
私が何かが欠けていない限り、これはかなり簡単です。擬似コードがありますが、これにはいくつかの方法を解決することができます...
SELECT
*
FROM
Table1
JOIN TABLE2 ON Table1.orderlist_email = TABLE2.email
Table1.flag1 = 0
AND TABLE2.flag2 = 0
また、あなたがそうのようJOIN
へWHERE
条件を追加することができます。
SELECT
*
FROM
Table1
JOIN TABLE2 ON Table1.orderlist_email = TABLE2.email
AND Table1.flag1 = 0
AND TABLE2.flag2 = 0
私はあなたの懸念はかどうかだと思いますこれは、エンジンが結合しようとする「あらかじめフィルタリングされた」セットを使用するのではなく、両方のテーブルのフルスキャンを実行することを意味しません。現代のエンジンはこれを理解するのに十分なほど賢明でなければなりませんが、クエリの複雑さに基づいて、あなたの走行距離は様々です。
フィルタリングされた結果を保存し、それらを一緒に結合するのに十分な(RAM /キャッシュ)領域がない可能性があります。それはあなたの予想よりも遅くなる可能性があります。
*技術的には可能ですが、効率的ではありません。
SELECT *
FROM (
SELECT * FROM Table1 where flag1 = 0
) A
JOIN (
SELECT * FROM TABLE2 where flag2 = 0
) B
ON A.orderlist_email = B.email;
ただし、最初に参加することをお勧めします。 MySQL(または何であれsqlエンジン)は(通常)あなたのために最適化された細かい作業を行います。
SELECT *
FROM Table1
JOIN TABLE2
ON A.orderlist_email = B.email
WHERE Table1.flag1 = 0
AND TABLE2.flag2 = 0;
'select ... from t1 join t2 on ... where ...'、つまりSELECTごとに1つだけです。 – jarlh
@jarlh申し訳ありませんが、私はこれをしたくありません。私は、テーブル全体で結合を使用することによって、いくつかの時間の問題を抱えています。 –
[JOINの2つのSELECT文の結果を結合する]の可能な複製(https://stackoverflow.com/questions/10538539/join-two-select-statement-results) – SharpKnight