• 締切済み

特定の項目が同じ値のレコードを1件だけ出力するには

guest98の回答

  • guest98
  • ベストアンサー率23% (4/17)
回答No.1

SELECT DISTINCT * FROM Tbl WHERE Col3 = "ABC1" AND Col4 = "1"; ではどうですか?

naktak
質問者

お礼

================================================ Col1, Col2, Col3, Col4, Col5, Col6 ------------------------------------------------ No1, Row1, ABC1, 1, DEF1, 1 No1, Row2, ABC1, 1, DEF1, 1 No2, Row1, ABC1, 1, DEF1, 2 No2, Row2, ABC1, 1, DEF1, 2 ================================================ でした。 とりあえずGROUP BYで逃げました。

関連するQ&A

  • JavaScriptでXMLレコードセットの検索・抽出

    お世話になります。 blue-horse と申します。 JavaScript上に、データベースのテーブルをXML形式で取出しました。 このXMLレコードセットをSQLのWHERE条件の様に、条件指定して検索・抽出したいのですが、どの様な方法があるのでしょうか。 現在は、ノードを順次巡って一致すればフラグを立て(以下略) と言う方法で考えていますが、ややこしくて仕方ありません。 何か良い方法がございましたら、ご紹介頂ければ有り難いです。 以下、やりたいことサンプル -------------------------------------------------------------- XML1: <recordset>   <record row='001'>     <col_01>abc</col_01>     <col_02>123</col_02>     <col_03>XXX</col_03>     <col_04>AAA</col_04>   </record>   <record row='002'>     <col_01>abc</col_01>     <col_02>456</col_02>     <col_03>ABC</col_03>     <col_04>AAA</col_04>   </record>   <record row='003'>     <col_01>abc</col_01>     <col_02>456</col_02>     <col_03>ABC</col_03>     <col_04>CCC</col_04>   </record>   <record row='004'>     <col_01>xyz</col_01>     <col_02>123</col_02>     <col_03>BBB</col_03>     <col_04>AAA</col_04>   </record> </recordset> 上記のXML1がJavaScript上に取得されており、それを操作して、 col_02 = '456' かつ col_03 = 'ABC' に一致する col_04 の値を抽出したXML2をJavaScript上に生成したい。

  • LIKEを使用したレコード抽出について

    OracleでLIKEを使用したレコード抽出で困っています。 あるテーブル(TAB_A)が以下のような属性だとします。 ------------- COL1 CHAR(5) COL2 CHAR(5) このとき、このテーブルに次のようにデータが格納されています。 COL1  COL2 -------------- ABC==  12345 [=]は便宜上1バイトスペースを表す このテーブルを対象として (1) SELECT * FROM TAB_A WHERE COL1 LIKE 'ABC%'; (2) SELECT * FROM TAB_A WHERE COL1 LIKE 'ABC==';   ([=]は便宜上1バイトスペースを表す) (3) SELECT * FROM TAB_A WHERE COL1 LIKE 'ABC'; というSQLを発行した場合に、いずれもレコードが抽出されてしまいます。(1)(2)の場合は当然だとは思うのですが、(3)でもレコードが抽出されることが理解できません。このようなことが起こり得るのでしょうか。

  • 2つの項目が重複するレコードを抽出する方法はありますか?

    MySQL4.1で既存データに対し複合キーを新しく設定したいのですが、 ALTER TABLE `test` ADD PRIMARY KEY (`a`,`b`) としても重複データが存在する為、作成できませんでした。 10万件あるテーブルから重複するレコードを手動で削除したいのですが、aとbが重複しているレコードだけ抽出するSQL文はありますでしょうか?

    • ベストアンサー
    • MySQL
  • 2つのテーブルからレコードを抽出する方法

    お世話になります。MySQLに関する質問です。 TABLE1とTABLE2の2つのテーブルからレコードを抽出する際、 TABLE1からは全項目のデータを取得し、TABLE2からは一部の項目の データを取得したいと考えています。 条件は、TABLE1とTABLE2を[No]という項目の値で紐(ひも)づけます。 (1) SELECT * FROM TABLE1 (2) SELECT COL_A, COL_B, COL_C FROM TABLE2 上記(1)(2)のレコードを1つのSQLで取得する方法について、どなたかご教授願えますか?

    • ベストアンサー
    • MySQL
  • 重複していないレコードの抽出方法について

    下記のテーブルの中で、 no1 フィールドが重複していない列(この場合ですが、200003のみ)を抽出したいのですが、どのような sql 文を書けば良いか分かりませんでした。 その為、このような場合、どのような sql 文を書けば良いかご存知の方がいらっしゃいましたら、 ご教示の程、よろしくお願いします。 【w_tblテーブル】 ―――――――――― |key| no1 |no2| ―――――――――― |1 |200001|1 | |2 |200002|1 | |3 |200001|2 | |4 |200002|2 | |5 |200001|3 | |6 |200003|2 | ―――――――――― 【SQL文】 SELECT `no1` FROM `w_tbl` 【結果】 200001 200001 200001 200002 200002 200003 【SQL文】 SELECT DISTINCT `no1` FROM `w_tbl` 【結果】 200001 200002 200003 【SQL文】 ※※※ここの書き方が分かりません。※※※ 【結果】 200003 以上、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL最大値レコード抽出について

    下記のようなテーブルがあったとしてフィールド1のコードごとにフィールド2が最大値のものを抽出したいのですが一回のSQLで可能ですか? フィールド1 フィールド2 abc 20070309 abc 20070302 abc 20070307 def 20070304 def 20070306 def 20070303 ・ ・ ・ 例: abc 20070309 def 20070306 ・ ・

    • ベストアンサー
    • MySQL
  • SQlを使用して指定レコードの削除を行いたい

    SQL構文を使用して、テーブル内の指定のデータを削除したいと思っています (oracle11gです) 条件抽出テーブル:PRM_A 抽出条件1の対象カラム:NO_1(6ケタで年月が入っている) 抽出条件2の対象カラム:NO_2(0か1が入っている) 抽出内容:NO_1の年月のうち、最小の値かつ、NO_2の値が0である →抽出結果として、6けたの年月が出力される 削除対象テーブル:DEL_TBL_A 削除条件用カラム1:DEL_COL_1 削除条件用カラム2:DEL_COL_2 削除条件:DEL_COL_1が「抽出結果」の1~4桁目(4桁の数値)と一致し、 DEL_COL_2が「抽出結果」の5~6桁目(2桁の数値)と一致する 以上の処理を行おうとして、まずは前半部分(抽出結果の抜き出しまで)を行いました。 select min(NO_1) from PRM_A where NO_2=0 上記で、想定できる結果の出力ができました。 その次に、削除条件を作成しようとしたのですが、下記の記載で実施したところ、 Error [row:3,col:130] ORA-00936: 式がありません。 と出力されました。 select substr((select min(NO_1) from PRM_A ),1,4) from PRM_A where NO_2=0 and (select min(NO_1) from PRM_A) ; 申し訳ございませんが、理由と正しいSQL文がお分かりになられる方がおりましたら、ご教授願えませんでしょうか

  • グループ化の際の文字列について

    SQLSERVER初心者でSQLをどうすればよいか 悩んでいます。アドバイスを頂ければと思います。 環境SQLSERVER2005 EXPRESS EDITION 下記のようなレコードでIDに対してどこかの 1項目にだけ文字列がはいっている形となっております。 (他の項目はNULLとなります。) これをIDでグループ化して1レコードにしたいのですが、 どのようなSQLで可能かアドバイス頂ければと思います。 ID   COL1   COL2   COL3   1   ABC    <NULL>   <NULL> 1   <NULL>   DEF    <NULL> 1   <NULL>  <NULL>   GHI 上記を下記のようにしたいのですが、 ID   COL1   COL2   COL3 1   ABC    DEF     GHI 以上アドバイスを頂けますと大変助かります。 よろしくお願いします。

  • レコードが選択されないときの、置換ができません

    select max(COL_1) from TBL where COL2 = 'hoge'; というようなSQLがあり、この条件での選択されるレコードが存在しないとき max(COL_1)の値を"0"(ゼロ)にしたいのですが。。。 select nvl(max(COL_1),NULL,0) from TBL where COL2 = 'hoge'; と修正しても結果は変わらず「レコードが選択されませんでした。」 となってしまいます。 他にdecodeや、countも試したのですが、力量不足のため、上手くいきません。。 どなたかご教授願います。 Oracle 9i で SQL*Plus 使用しています。

  • SQLiteで最も古いレコードのみの削除

    AndoroidでDBを使うのですが、考える動作のSQL文が作成できません。 テーブルTESTは以下のカラムを持ちます  ・ID - primary key not null  ・VALUE - not null テーブルTESTは最大で10件のレコードを保持します、11件目のレコードが発生したら 最も古い1件目のレコードを削除してから、11件目のデータを新しい10件目のデータとして テーブルに保存します。 そのために「最も古いレコード1件のみを削除する」というSQLを作成したいのですが、 考えたSQL文が正しくないと怒られてしまいます。 delete from TEST as A, (select * from TEST LIMIT 1)as B where A.ID=B.ID; この動作を1つのSQL文で行うのは不可能なのでしょうか?