• ベストアンサー

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

chairwarmerの回答

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

select * from oshiete where [検索条件] order by goo limit 0, 3 というSQLにすると 「WHERE句の条件で絞り込んだ結果から、先頭の3行を取得する」 という動きになります。 「先頭の3行を取得した後、そこからWHERE条件で絞込みたい」 というのであれば、サブクエリを使用して select a.* from (select * from oshiete order by goo limit 0, 3) a where [検索条件] という形で実現できませんでしょうか。

itmedia_search
質問者

お礼

回答ありがとうございました。何とかできました。

関連するQ&A

  • 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 offset

    offsetやlimitをつけると 結果が表示されなくなります。 $sql='SELECT naiyo FROM zyoho WHERE cityid=? OR brandid=? だけのSQLだと結果は表示されるのですが。 解決方法をご教授お願いいたします。 下記はソースです。 $page=1; $limit=2; $offset = $limit * ($page - 1); $lastpage = ceil($total / $limit); if($brandid=='') { $sql='SELECT naiyo FROM zyoho WHERE cityid=? OR brandid=? ORDER BY `code` DESC LIMIT'.$limit.' OFFSET '.$offset.''; }else{ $sql='SELECT naiyo FROM zyoho WHERE cityid=? AND brandid=?ORDER BY `code` DESC LIMIT'.$limit.' OFFSET '.$offset.''; } $stmt=$dbh->prepare($sql); $data[]=$cityid; $data[]=$brandid; $stmt->execute($data); $dbh = null;

    • ベストアンサー
    • MySQL
  • sql文について

    sql文のswichをif分で変更したい。 下記のswitch文のlimitの範囲をユーザーが<a href="sqlpage1.php?sex=男&p=2">2ページ目</a>,<a href="sqlpage1.php?sex=男&p=3">3ページ目</a>,<a href="sqlpage1.php?sex=男&p=4">4ページ目</a>・・・・・・などを選択しクリックした場合にlimitの範囲を変更したいのですが(例 1ページ目・0~10、2ページ目・11~20、3ページ目・21~30、4ページ目・31~40・・・・・・) if文はどう書けばいいですか? ページはcssが一緒なので変えなくていいかなと思い一緒にしました。 以下、デフォルト(sqlpage1.php?sex=男&p=1)のものです。 switch($_REQUEST['sex']) { case 男; $sql = 'SELECT * FROM human where sex="男" order by limit (0,10)';ここを変更したい。 break; case 女; $sql = 'SELECT * FROM human where sex="女" order by limit 0,10'; break; case 中性; $sql = 'SELECT * FROM human where sex= "中性" order by limit 0,10'; break; }

    • ベストアンサー
    • MySQL
  • SQLエラー

    検索システムの検索結果の分割をしようとしています。 しかしどうしてもSQL文にエラーがでてしまいます。 SELECT * FROM shops where (area='◯◯◯') ORDER BY id DESC limit0, 10 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'limit0, 10' at line 1 該当するSQL文は以下になります。 $query = "SELECT * FROM shops"; $where = array(); if (isset($_GET['area'])and($_GET['area'] !== '')) { $where[] = sprintf("(area='%s')", mysql_real_escape_string($_GET['area'])); } if (count($where) <> 0) { $query .= ' where ' . implode(' and ', $where) . ' ORDER BY id DESC '; }   $query .= "limit" . $page_num*10 . ", 10" ; limit句の使い方等間違いはないのかなと思うのですが、いかがでしょうか? アドバイスご教示いただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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
  • DB2の行指定検索SQLについて

    select * from table where col1='X' order by col2; のようなselect文のXX行目~YYY行目の結果を返したい場合のSQLは、どのように作成すればよいのでしょうか?散々調べましたが、回答が見当たりませんでした。 どなたかご存知のかたいらっしゃいましたらご教授ください。

  • 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文があれば教えてください。 」

  • SQL whereの中のif文について

    SQLの中にif文を使いたいですが、 うまくいきません。 やはりwhereの中で使えないですか? アドバイスお願いします。 実際のSQL文: $sql = "select * from room";     $sql = $sql . " WHERE ((Keisai = 1)"; if(Chinryou1>0){ $sql = $sql . " and (Chinryou1 <= {$rent1})";     }else if(Chinryou1==0){ $sql = $sql . " and (Chinryou2 <= {$rent1})";    } $sql = $sql . ")"; $sql = $sql . " order by Narabijun desc, Name"; $sql = $sql . ";"; $result = mysql_query($sql, $conn); $num = mysql_num_rows($result);

    • ベストアンサー
    • MySQL
  • 秀丸で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, HAVING について

    こんにちは。さっそくですが、 白男川 恵さん著作による 「Oracle Master Bronze 演習問題 SQL基礎I」 の問95について質問させていただきます。 問題文 CAT_ID列の値が20であるPRICE列の最大値を求めたい。 実行すべきSQL文として正しいものを選びなさい。 とあり、正解は (B) SELECT cat_id, MAX(price) FROM itemlist HAVING cat_id = 20 GROUP BY cat_id (C) SELECT cat_id, MAX(price) FROM itemlist WHERE cat_id = 20 GROUP BY cat_id なのですが、 WHERE句の使用法としては 大体の場合 WHERE (ターゲット) = (値) となると思うのですが、ターゲットのところが グループ関数でないのでこの場合は正解としてもよい、 ということでしょうか? 以下のサイトを別のタブで見ていただきたいのですが、 http://www.atmarkit.co.jp/fdb/rensai/tsql05/tsql05_1.html 「WHERE句とGROUP BY句を併用した場合、 WHERE → GROUP BYの順でクエリが評価されるため、 グループ化された結果をWHERE句の段階で利用できないのです。」 「HAVING句とGROUP BY句を利用した場合、 GROUP BY → HAVINGの順でクエリが評価され、 グループ化された結果に対し条件を指定することが可能です。」 http://www.atmarkit.co.jp/fdb/rensai/tsql05/tsql05_2.html 「HAVING句はGROUP BY句によってグループ化が行われたデータに対し、 絞り込みの条件を指定できます。 このため、絞り込み条件に集計関数を含めることが可能です。」 この設問の場合には WHERE→GROUP BYの順でも GROUP BY→HAVING の場合でもWHERE のターゲットがグループ関数で得られた値 で条件指定するわけではないので文法的にも正しく おなじ結果が得られる こういう解釈でよろしいのでしょうか? ご存知の方、教えていただけないでしょうか? よろしくお願いします。