setechdiv@wiki
共通(SQL)
最終更新:
Bot(ページ名リンク)
-
view
例1: 「①fooテーブルから項目Fを取得したい」。 ただし、「②fooテーブルは項目Bにおいてbarテーブルと結合している」必要がある。 また、「③barテーブルは項目Zにおいてbazテーブルと結合している」必要がある。 ①SELECT F FROM foo ②INNER JOIN ( ③bar INNER JOIN baz ON bar.Z = baz.Z ON foo.F = bar.F
SQLServerでは、
外部結合で値の取れてこなかったやつ → NULLになっている
外部結合で値の取れてこなかったやつ → NULLになっている
SELECT HOGE.* FROM HOGE LEFT JOIN HUGA ON HOGE.ID = HUGA.ID WHERE HUGA.ID IS NULL
LEFT JOINでとりあえず全件みられる状況を作り、
そこから結合「できなかった」ものを絞り込む。
これの応用で、「ワークテーブルHOGEにあって本テーブルHUGAにないデータ」を出し、
「HUGAにあってHOGEにないHUGAのデータに削除フラグを立てる!」ことができる!
そこから結合「できなかった」ものを絞り込む。
これの応用で、「ワークテーブルHOGEにあって本テーブルHUGAにないデータ」を出し、
「HUGAにあってHOGEにないHUGAのデータに削除フラグを立てる!」ことができる!
UPDATE 本テーブル SET 削除FG = '1' FROM 本テーブル AS HOGE LEFT JOIN (SELECT * FROM ワークテーブル WHERE IPアドレス = '299.299.299.299') AS HUGA ON HOGE.NO = HUGA.NO WHERE HOGE.ID = 'ididid' AND HOGE.発生日 = '20110101' AND HOGE.連番 = 7 AND HUGA.NO IS NULL
これを自分で書けますか、というと、まだ書けない。
ダメダメだ―!
ダメダメだ―!
- (ハイフン)やスペースを含むテーブル名、項目名の場合、多くのDBMSツールではSQLエラーが起きるので、""や''で囲っておくこと。
Accessは[]だったけど、Oracleでは""しか使えないみたい。
.