• ベストアンサー
  • すぐに回答を!

SQL得意な方

仕事で困っています、 なにとぞお力添えを。 テーブル1から、TOP50 でaとbを表示させたいのです。 で、その際の条件として、 開始するレコードも指定したいのです。 下記SQLの[○]の部分に50が入っていたら、 51~100件を表示する、と、いうような。 SELECT TOP 50 a,b FROM テーブル1 WHERE c='1' AND a >= '' AND a NOT IN ( SELECT TOP 〇 a FROM テーブル1) ORDER BY a で、順調だったのですが、WHERE条件が なんだか怪しいらしく、 a >= ''の時だけはきちんと動くのですが、 ANDでc='1'をつけた所、普通に全件表示されてしまいます。 [ちゃんと51件目から100件目を表示するSQL] SELECT TOP 50 a,b FROM テーブル1 WHERE a >= '' AND a NOT IN ( SELECT TOP 〇 a FROM テーブル1) ORDER BY a [何故か全件表示になるSQL] SELECT TOP 50 a,b FROM テーブル1 WHERE c='1' AND a >= '' AND a NOT IN ( SELECT TOP 〇 a FROM テーブル1) ORDER BY a ※[何故かNOT IN (~)の部分がまったく働いていない] どうしてなのでしょう?。 解りにくい質問で大変申し訳ないのですが どなたかご教授いただけないでしょうか。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数201
  • ありがとう数1

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

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

サブクエリー側にwhere句が無いんですけどいいんですか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

返答ありがとうございます。 <サブクエリー側にwhere句が無いんですけどいいんですか?> ぜんぜんよくありませんでした(苦笑)。 ああ、そんなことかぁ・・・ でも、ぜんぜん気が付かなかったです、はい。 プログラマ失格ですね、僕。ははは。 とにかく、ほんと助かりました。 40点ぐらい差し上げたいですが20点で勘弁してください。 では。また機会があれば宜しくお願い致します。

関連するQ&A

  • SQLについて何ですが

    一つのSQLで下記の様な検索が出来ないかと考えています、 大分類に分けて大分類の中で売れている商品のTOP10を表示し、 現在表示されている商品を抜いた売れている商品TOP100もに表示できるようとしています、 分類のテーブル・商品がどの分類に当てはまるのか関連づけし注文数も保持しているテーブル・商品の売れ行きを保持しているテーブルがあり 分類テーブルには15個(将来的に増える可能性ある)の分類ワードが入っていて、分類別に売れているTOP10を表示し重複部分もあるので最大150個の商品が表示されるようになっています、 全商品の売れ行きTop「表示されている商品プラス100件」を割り出しその中から表示商品はずしてみようと思いこの様なSQL文と作ったのですが今一うまくいっていないような気がします、 「select 商品名 注文数 from 商品テーブル    where 商品名 not in( select 商品名 from 分類商品テーブル where 分類 in ( select 分類 from 分類テーブル )    order by 注文数 desc limit 10) order by 注文数 desc limit 表示商品数+100」 どうもうまく表示できていない様な気がしているのですが、 このSQLどうなのでしょうか? ほかにもっといいSQL文があれば教えてください。 」

  • DB2のSQL

    select * from xTABLE where EMP_ID = "P001" というSQLを実行すると SQL0206N "P001" is not valid in the context where it is used. SQLSTATE=42703 のエラーが出ます。 SQLSTATEで調べても「"P001"の列がテーブルにない」ということみたいですが 列名で捉えている時点でおかしい気がします select * from xTABLE where EMP_ID = null のSQLは正常にテーブルのSELECT結果が返ってきます。 どうすればよいでしょうか?

  • 埋め込みSQLについて

    現在C言語で開発を行っている初級のIT技術者です。 pro*cでは、inner joinやexistsを使うとコンパイルエラーとなってしまいます。 泣く泣く、inを使ってしまいました。例えば以下テーブルがあります。 請求テーブル 識別ID 更新日付 201405 20140922 100177 20140204 258087 20140412 201497 20140711 258055 20140812 履歴テーブル 加入者ID 識別ID(主キー) 2014   201405 5800   587405 2014   258087  8507   874575 以下をパッケージに記載しています。 EXEC SQL SELECT 色々 FROM 請求テーブル WHERE 識別ID IN (SELECT 識別ID FROM 請求テーブル WHERE 加入者ID = 変数) ORDER BY 更新日付 ASC 例えば、変数として2014が来た場合は、履歴テーブルより 2014   201405 2014   258087 が選択されて、請求テーブルの更新日付を見て古い方を取ってくるので 結局258087 20140412が取得されます。この代わりとなる、pro*cで記述できる SQLはどんなのがありますでしょうか?

  • SQLの結果が返ってこない

    PHP+mysqlで以下のようなSQL文で処理を行ったのですがデータが返ってきません。 $sql = 'SELECT * FROM books WHERE id=3'; $recordSet = mysql_query($sql); if(mysql_fetch_assoc($recordSet)){ while ($table = mysql_fetch_assoc($recordSet)) {        処理     } } mysqlの画面で SELECT * FROM books WHERE id=3 を入力してみるとしっかりと結果が返ってきます。 ちなみに1行目を、違うテーブルの $sql = 'SELECT * FROM podcast WHERE code=3 ORDER BY dcdate DESC LIMIT 0,3'; にしてみると、データが表示されます。 2日間かけてずっと試行錯誤してみたのですが、完全に行き詰ってしまったので、何か考えられる原因はありませんでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQL '%@'とは?

    こんばんわ。 SQLの質問なのですが、 SELECT * FROM aテーブル WHERE aテーブル.番号 IN '%@' というSQL文が 学校で使われていましたが、 '%@'とは何を指すのでしょうか? 調べても分からなかったので ご教授願います。

  • 秀丸でSQLを書く際に SQLの予約語だけ大文字

    秀丸でSQLを書く際に SQLの予約語だけを、大文字に変換するよい方法は? たとえば select * from table_1 where id=1 order by id desc; と書いて、マクロを起動すると SELECT * FROM talbe_1 WHERE id=1 ORDER BY id DESC; となるようにするよい方法はありませんか? また、予約語が「強調」されると尚良いです。

  • sqlのwhereで指定した条件の前後を取得したい

    テーブル=T) KEY DATA 001 あ 002 い 003 う 004 え 005 お SQL) SELECT DATA FROM T WHERE KEY = 003 ; 上記のSQLでは、「う」のデータしか取得できませんが、 「003」の前後1件、合計3件の「い」「う」「え」を取得する方法を教えて下さい。 ちなみに、 SELECT DATA FROM T WHERE KEY >= 003 AND ROWNUM <= 2 と SELECT * FROM ( SELECT DATA FROM T WHERE KEY < 003 ORDER BY KEY DESC ) WHERE ROWNUM < 1 のUNIONでは上手く行きませんでした。 よろしくお願いします。

  • SQL文 この部分はなんていうのでしょう?

    SELECT T_テーブル1.フィールド1 FROM T_テーブル1 ORDER BY T_テーブル1.フィールド1; なら、 ”ORDER BY句” SELECT T_テーブル1.フィールド1 FROM T_テーブル1 WHERE (((T_テーブル1.フィールド1)="A")); なら ”WHERE句” と言いますが、 DELETE Table1.* FROM Table1; や UPDATE テーブル1 Set テーブル1.フィールド1 = "い" WHERE (((テーブル1.フィールド1)=”あ")); や DROP Table Table1; の deleteやupdateやdropの部分は何て言うのでしょうか? そのまま、SELECT句DELETE句などというのでしょうか?

  • 以下のSQLにWHEREで指定することは可能でしょうか?

    select * from oshiete order by goo limit 0, 3 ; というSQL文があります。これにWHEREで指定したいのですが、なかなかできません。どのようにしたらよいのでしょうか?

    • ベストアンサー
    • MySQL
  • SQLのクエリで教えてほしいです。

    SQLのクエリで教えてほしいです。 ある列のTOP10を出してグラフを作成したいと考えております。 また、そのTOP10の行をカウントして何件あるかを知りたいのですが なかなか思うように動きません。 以下クエリを作ったのですが、結果に16行の結果(Top16?) になってしまいます。 また、一つのSQLで、Countも含めたいと思ってますが、こういった場合 はどこに記述すればいいのでしょうか。 select TOP (10) Percent hoge from hogehoge group by hoge order by hoge ご存知の方、よろしくお願い致します。