###前提・実現したいこと
MySQLで同構成の2つの集合を(行)比較し、
最新の方を表示することは可能でしょうか?
具体的には、以下のような感じです。(実際には、カラムは200個ぐらいあるクソ仕様になっています。)
2016_humans
1 170
2 160
2017_humans
1 175
2 160
3 150
結果
1 175
3 150
以上、よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
これは命題が中途半端。具体的な抜き出しの根拠が示されていない。
2の値が同じだから抜き出さないでそれ以外は2017をとるなら
単純にleft joinして値が違うものだけ取り出せばいいのでは?
投稿2016/11/30 00:26
総合スコア114757
0
ベストアンサー
昨年のものになく、最新のものが取得したい、ということであれば、
キーに対するNOT EXISTS句での処理が有効と思われます。
参考サイト:MySQLで集合差を出す
OracleならキーをMINUS句で作り、IN句でさくっと書けるのですがね・・。
投稿2016/11/30 00:11
総合スコア716
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/02 00:36
0
2017_humans で更新されたか新規追加されたレコードを取得したいということですね?カラム名を id(PK) , height としたとき、やっつけですが下記クエリで実現できます。
sql
1SELECT `2017_humans`.* FROM `2017_humans` LEFT JOIN `2016_humans` USING(`id`) 2WHERE `2017_humans`.`height`<>`2016_humans`.`height` OR `2016_humans`.`height` IS NULL;
なお、2017_humans で削除された(2016_human にはあるが 2017_humans にはない)レコードは取得されませんのでご注意ください。
投稿2016/11/29 17:34
総合スコア3095
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/01 23:55
2016/12/03 15:40
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/01 23:58