mysql クエリの質問をして、100 ポイントを与えてください。

WBOY
リリース: 2016-06-23 14:39:22
オリジナル
1329 人が閲覧しました

この投稿は SHANDIANDIAN によって最終編集されました: 2013-12-12 12:15:27

テーブル A uid 1 1 101 100
2 2 105 2 1 100 100
3 3 98 3 2 105 200 4 4 55 4 2 105 300 5 5 60 5 3 60 300 6 B の合計数量は次のようになります。テーブル A と一致しない場合は、0 が表示されます。マッチングは、mid とCash の 2 つのフィールドによって行われます。 SQLはどのように書くのでしょうか? ?テーブル A に基づく
結果テーブル
uid ミッドキャッシュ番号
1 1 100 100
2 2 105 500
3 3 98 300
4 4 55 0
5 5 60 0
6 6 70 0


ディスカッションに返信 (解決策)

ここを参照してください
http://sqlfiddle.com/#!2/f5620/3

この実行の結果はまだ間違っています、合計はありません
いたずらすぎるので、後で投稿を編集しました
これを参照してください

http://sqlfiddle.com/#!2/9847b/12

create temporary table Aselect 1 as uid, 1 as mid, 100 as cashunion select 2, 2, 105union select 3, 3,  98union select 4, 4,  55union select 5, 5,  60union select 6, 6,  70;create temporary table Bselect 1 as uid, 1 as mid, 101 as cash, 100 as  numberunion select 2,     1,   100,    100union select 3,     2,   105,    200union select 4,     2,   105,    300union select 5,     3,   60,     300union select 6,     3,   98,     300;select uid,mid, cash, (select sum(number) from B where mid=A.mid and cash=A.cash) from A
ログイン後にコピー
1 1 100 100
2 2 105 500

3 3 98 300

4 4 55

5 5 60

6 6

テストを書くdata クエリ命令を書くよりも 10 倍以上の時間がかかります


これが私が望むものです
左結合から数値として a.*,if(t.number is null,0,t.number) を選択します
(select b.mid,b.cash,sum(b.number) as number from b group by Mid,cash) as t
on t.mid=a.mid and t.cash=a.cash



select a.uid, a.mid, a.cash, sum(b.number) from testa as a left join testb as b on a.mid=b.mid and a.cash = b.cash group by a.mid, a.cash
ログイン後にコピー


この戻り結果は
uid 60
6 6 70

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート