• ベストアンサー

既存のテーブルに重複フラグを新設

お世話になります。 もう一つ質問させてください。 名前、性別、年齢 suzuki,male,20 tanaka,female,20 yamada,female,20 takeda,male,20 ono,male,20 条件:性別と年齢が重複しているデータは 新設フラグに1を立てる、他は0かNULL 名前、性別、年齢、重複フラグ suzuki,male,20,1 tanaka,female,20,1 yamada,female,20,1 takeda,male,20,1 ono,male,27,null この場合のSQL記述はどのようになりますか? 宜しくお願い致します。

  • Oracle
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

たぶん、#1のSQLはエラーになると思うんですよね。(確信が無いんですが・・) update table1 set 重複フラグ=1 where (性別,年齢) in (select 性別,年齢 from table1 group by 性別,年齢 having count(*)>1) ; で良いと思います。

geso775
質問者

お礼

k_o_r_o_c_h_a_n様、いつもお世話になります。 ご教示のSQLを元に対応できました。有難う御座いました。

その他の回答 (1)

回答No.1

未確認ですが、多分こんな感じです。 UPDATE TABLE1 SET 重複フラグ = 1 WHERE EXISTS (SELECT * FROM TABLE1 b TABLE1.性別 = b.性別 AND TABLE1.年齢 = b.年齢 GROUP BY 性別,年齢 HAVING COUNT(*) > 1)

geso775
質問者

お礼

参考になりました。有難う御座いました。

関連するQ&A

  • 既存のテーブルにフィールドを新設

    お世話になります。 既存のテーブルに新たに1行フィールドを設けようとしていますが どのような手法がありますでしょうか? 以下の構成のテーブルがあったとすると、 名前、性別、年齢 suzuki,male,20 tanaka,female,21 yamada,female,26 takeda,male,27 ono,male,62 名前、性別、年齢、新設フラグ tanaka,female,21,1 yamada,female,26,1 takeda,male,27,null suzuki,female,35,null ono,male,62,null 条件:20台の女性 現状は別名でテーブルをcreateして元テーブルとrenameしているのですが 一度でできないでしょうか?宜しくお願いします。

  • 複数テーブルが絡む複雑なUPDATE文の書き方

    こんばんは 次のような2つのテーブルを参照して条件を指定するUPDATE文はどのように書けばよいのでしょうか? Parentsテーブル ID, Name, HasChild, AGE 1, Tanaka, True, 20 2, Yamamoto, False, 25 3, Suzuki, True, 30 4, Kobayashi, True, 20 5, Sato, True, 25 Children ID, Name, ParentID, Male, Flag 1, Taro, 1, True, 0 2, Hanako, 1, False, 0 3, Ichiro, 3, True, 0 4, Jiro, 4, True, 0 5, Subroh, 5, True, 0 やりたいこと:20歳の親を持つ男の子のみにフラグを付ける Parentテーブルで、親が子持ち(HasChild = True)で、年齢が20歳の人だけを対象に Childrenテーブルでその親の子(Parents.ID = Children.ParentID)が男の子(Male = True)だった場合、 Flag を 0 から 1 に変更する 実行結果 Children ID, Name, ParentID, Male, Flag 1, Taro, 1, True, 1 2, Hanako, 1, False, 0 3, Ichiro, 3, True, 0 4, Jiro, 4, True, 1 5, Subroh, 5, True, 0 結果は、Tanaka TaroくんとKobayashi Jiroくんのフラグが1になります。 複数テーブルのSELECTについては勉強してきましたが、こういうパターンは初めてでわかりません。エクセルVBAから.mdbファイルを扱う時に使います。Microsoft.Jet.OLEDB.4.0のADODB.Connectionを使っています。 よろしくお願いします。

  • 階層構造に対するSQLに関して

    階層構造に対するSQLに関して教えて下さい。 以下のような階層構造になっているデータが存在していますが、単純にトップを指定し、それ以下の 組織を表示させる事は簡単かと思われますが、下位層の品番を指定、その人が所属している部署のトップだけを 抽出するようなSQLはどのように記述すれば良いでしょうか、、、 恐らくCONNECT BY を使うかと思われますが、記述の仕方がわかりません。 以下のケースでは、TANAKAさんを指定した場合、TANAKAさんは兼務している為、トップとしては、 SUZUKIさんとSASAKIさんが抽出されるSQLとしたいです。 【テーブル内容】 EMPNO ENAME MGR(上司) 1 SUZUKI 2 SATO 1 3 YAMADA 1 4 TANAKA 3 5 FUKUDA 1 6 ENDO 5 7 KOIKE 6 8 SASAKI 4 TANAKA 8 よろしくお願いします。

  • SQL テーブル結合

    こんばんは SQLのselectで困っています。 以下の2つのテーブルから、 ID=2の人のID,名前,Birthday,2007年の合計給与を取得したい時、 どのようなSQLにすればよいのでしょうか>_< Empテーブル --------------------------------------- ID | Name |Birthday -----|---------|----------------------- 1  |Suzuki  |19491120 2  |Tanaka  |19551020 3  |Ito   |19500203 -----|---------|----------------------- 給与テーブル(上期下期で分かれている) --------------------------------------- ID |Year |Term |Salary -----|-------|------------|------------ 1 |2007 |FirstHalf |2200000 1 |2007 |SecondHalf |1950000 1 |2008 |FirstHalf |2000000 1 |2008 |SecondHalf |1900000 2 |2007 |FirstHalf |2000000 2 |2007 |SecondHalf |2000000 2 |2008 |FirstHalf |2100000 2 |2008 |SecondHalf |1800000 -----|-------|------------|---------- 色々試したのですが、いまいちわかりません。 アドバイスお願いします!

  • Excelの一覧から重複データを削除したい(関数)

    Excelに関する質問です。 表から重複するデータを削除したいのですが、 並び替えて、重複を目でみて削除するのは大変なので、 「名前」と「郵便番号」が一致するデータに「1」などの フラグを立てる関数を教えて下さい。 もしくは、表の中に「指定した郵便番号」が何個 存在するのかをカウントする関数でも結構です。 ちなみに、表はこんな感じです。 A列、B列、C列の順に 名前   郵便番号 都道府県 住所 山田一郎 630-8888 北海道 札幌市北区新川×× 山田ニ郎 001-1234 東京都 小平市×××××× 山田三郎 555-8888 鹿児島 櫻島時×××××× こんな表があって、全部で500レコードほどあります。

  • テーブルのカラム(列)を追加したい

    お世話になります、 DBはOracle8iです。 一度作成して、データが入っているテーブルAの カラム(列)をデータをそのままにして追加できるの でしょうか? 追加前のデータにデフォルト値を与えることはできるのでしょうか? [変更前] 名前 年齢 性別 あ   1  男 い   2  女 う   3  男 ↓カラム追加 [変更後] 名前 年齢 性別 フラグ あ   1  男   0 い   2  女   0 う   3  男   0  以上のような感じにしたいのですが、 Alter table文を使うところまではわかっているのですが。。。 よろしくお願いします。

  • テーブルに格納されている最後の行数が知りたい

    使用環境:mysql 5.1 内容:テーブルに格納されている最後の行数が知りたいです。 テーブル名:seito no name 1 tanaka 2 suzuki : : 100 kato のように1つのレコードに番号を振って名前をつけているのですが、 「seito」テーブルに登録されている最後の番号を取得するSQL文 を教えていただけないでしょうか? ちなみに、最後が必ず「kato」というわけではないので「seito」テーブルの noカラムにおける最後の番号を取得したいと考えてます。 上記の場合「100」番が取得できれば希望の結果となります。 よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 複数のテーブルから情報を引き出して整理

    「去年の登録者」「今年の登録者」というテーブルがあるとします。 カラムは両方とも「名前」「性別」「年齢」があり、人物の情報が入ってます。 両方にデータが入ってる人もいれば、片方にしかデータが入ってない人もいます。 この2つのテーブルから男性のデータを引き出し 名前 去年の年齢 今年の年齢 太郎 21歳    22歳 二郎 24歳    データなし 三郎 データなし 20歳 このようにしたいのですがsql文が思いつきません。 アドバイスをください。

    • ベストアンサー
    • MySQL
  • 同一ファイルからの文字列検索

    お世話になります。 今、ファイル処理を勉強しています。 hoge.txtに文字列が格納されています。 (hoge.txt) --------------------- suzuki yamada kimura tanaka ito suzuki kimura --------------------- hoge.txtの上の行より、下に検索を行い、 一致した場合、printf("HIT\n");と出力します。 動きは、 suzukiを検索文字列し、yamada~kimuraまで検索を行い、 もしヒットした場合、出力表示します。 suzukiが検索終了すると、次のyamadaを検索文字列として、 kimura~kimuraを検索します。 この動作を最後の行まで行えば終了です。 下記のfgets()で1行分を取得してからの 次の行への移行がわかりません。 FILE *fp; char name[256]; if( (fp =fopen( "hoge.txt", "r )) == NULL ){ return 0; } while( fgets(name, sizeof(name), fp ) != NULL ){ //ここで次の行以下とstrstr()で比較を行う } お手数をお掛けしますが、よろしくお願い致します。

  • 行列の入れ替え

    次の(1)(2)のようなマスターとテーブルを、社員IDをキーに結合し、 (3)のように1行=1社員のフォーマットで出力するSQL文を教えてください。 (1) 社員マスター ----------------- 社員ID 名前 性別 ----------------- 1     A  1 2     B  1 3     C  2 ----------------- (2) 出席テーブル ---------------------- 社員ID 年月 ---------------------- 1   200601     1   200602     1   200603     2   200601     3   200601     3   200602     ---------------------- 出力したいフォーマット --------------------------------------------------------------- 名前ID 名前 性別 1回目 2回目 3回目 --------------------------------------------------------------- 1    A  1    200601 200602 200603 2    B  1    200601 NULL  NULL 3    C  2    200601 200602 NULL --------------------------------------------------------------- よろしくお願い致します。