• 締切済み

select '' from shain where flgbit = 1;

flgbitが1であるレコードが存在するかを調べるために select flgbit from shain where flgbit = 1; としていました。 しかし、この戻り値でflgbit=1が得られますがそれは使いません。 このような場合、selectでなくfindのようなものはありませんか? select flgbit from shain where flgbit = 1; が一番高速な方法ですか?

みんなの回答

回答No.2

>select flgbit from shain where flgbit = 1; >が一番高速な方法ですか? select flgbit from shain where flgbit=1 limit 1; が一番、無駄がないと思います。 >select NULL みたいにはできないんですね。 >flgbitやcount(*)を得るのは仕方がないんですね。 select null from shain where flgbit=1 limit 1; や select 1 from shain where flgbit=1 limit 1; や select '真' from shain where flgbit=1 limit 1; あるいは select 1 from shain where flgbit in(1,3,5,7,9) limit 1; とすることも可能ですが、性能的には差は出ませんよ?

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

select flgbit from shain where flgbit=1 limit 1 もしくは select count(*) from shain where flgbit=1 GROUP BY id とすればよいでしょう。 flgbitにインデックスをつけていれば高速に処理できます

cpwiec
質問者

お礼

ありがとうございます。 select NULL みたいにはできないんですね。 flgbitやcount(*)を得るのは仕方がないんですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SELECT * FROM tbl WHERE a = ?;

    SELECT * FROM tbl WHERE a = ?; 上記のSQL文で、?の部分がnullだとWHERE条件を無い状態に(SELECT * FROM tbl) のようにするにはどうすればいいでしょうか?

  • SELECT のWHEREに別のSELECT

    SELECT のWHEREに別のSELECTの結果を当てはめることは可能でしょうか? ただし、引用テーブルは同じテーブルとします。(DDD) 例 SELECT * FROM DDD WHERE B = (SELECT B FROM DDD WHERE C=1) 再起SQLとはまた違うのでしょうか?

  • select * from rooms where rtype like _____

    rtypeフィールドが5文字のレコードを得たいのですが [ODBC Microsoft Access Driver] クエリ式 'rtype like _____' の 構文エラー でした。 select * from rooms where rtype like _____ のどこがいけないのでしょうか?

  • from...where を from...join..on にするには

    以下のSQL文は from ... where ... で書かれていますが これを from ... join ... on ... で書き直したいのですが可能でしょうか? select X.col1, U.col1 from TABLE_X as X ,TABLE_U as U where U.REC_NO = (select B.REC_NO from TABLE_A as A, TABLE_B as B where A.ITME = B.ITEM and X.DATA = A.DATA fetch first 1 row only ) むずかしくしているのは、fetch first 1 row only なのですが これがないと where句のかっこのなかのselect文は複数の結果を返します しかし、その複数の結果はすべて同じものになることがデータ上保証されています 。 fetch first を除いて select distinct としても同じ結果となりますが パフォーマンスがひどく低下してしまいます。

  • select from where

    行き詰ってます!ご教授下さい。 データの一覧から【更新】【削除】編集作業を行いたいのですが、うまくいきません。 ソースを記載しますので、修正点をお教え下さい。 データの一覧はうまくいっております。登録も出来ております。 '##### データ参照 ##### strSQL = "select * from テーブル名" Request.QueryString("ID")にてリンクをかけてその情報を編集したいのですが、値が取得できません。 <a href="test.asp?ID=<%=("データベースオートナンバー")%>">更新</a> 編集側で以下、条件抽出を出すと ID 1 のデータが表示されるのですが、 '##### データ参照 ##### strSQL = "select * From SITE_DATA where 【 ID=1 ここです】" ID【 <%=objRS("ID")%> 】 NAME【 <%=objRS("NAME")%> 】 URL【 <%=objRS("URL")%> 】 私が行いたいのは、データ一覧から更新リンクをクリックすると、 そのデータを抽出し、表示、編集を行いたいと思っています。 データ1を<a href="test.asp?ID=ナンバー...【更新】</a> データ2を<a href="test.asp?ID=ナンバー...【更新】</a> データ3を<a href="test.asp?ID=ナンバー...【更新】</a> エラーなどは出ないのですが、まったく表示されず、まいっています。 参考書などをみているのですが、いまいち理解ができません。 ※初心者ですので、理解が浅すぎる事は分かっています。どうか宜しくお願いします。 説明がうまく伝わればよいですが、、、

  • 複雑なSELECT

    SELECT * FROM hoge WHERE hoge LIKE '%$okweb%' ORDER BY day DESC; と、ほしい情報が入っているレコードを取得した場合、セレクトした一番最後のレコードの次を取得するにはどうしたらいいのでしょうか?又は一番初めの一つ前のレコードを取得するにはどうしたらいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • whereの使い方が分からないのですが…

    foodテーブルの全ての項目内から「りんご」「みかん」というのキーワードをAND検索させたいのですが、 select * from food where ("りんご" AND "みかん"); select * from food where * "りんご" AND "みかん"; select * from food where *="りんご" AND *="みかん"; select * from food where *=("りんご" AND "みかん"); 思いつく限り試しましたが、どれもうまく行きません。 select * from food where (a="りんご" AND a="みかん") or (b="りんご" AND b="みかん") or (c="りんご" AND c="みかん") or… と、延々と続いて書くしかないのでしょうか? 何か方法はありますか?

    • ベストアンサー
    • MySQL
  • SELECT文中のFROM区

    SELECT文のFROM区にはテーブル名が並びますが、 SELECT … FROM TSCD001, TSCD002 TSCD002_SK, TSCD003 CT1001, TSCD004 TSCD004a WHERE … のように記述されているSELECT文があります。 FROM区の1行目(TSCD001)は理解できますが、 質問(1) 2行目 『TSCD002 TSCD002_SK』のような書き方はどのような 意味をもつのでしょうか?TSCD002はテーブル名だということは 分かっています。TSCD002_SKは何でしょう? (4行目も同様のパターンのようです)  質問(2) 3行目 『TSCD003 CT1001』のTSCD003はテーブルであり、 CT001もテーブルでした。このようにテーブルを半角スペースで 並べて書くのはどのような意味があるのでしょうか?

  • php5+mysqlのSELECT文でwhere句を指定すると正しく動

    php5+mysqlのSELECT文でwhere句を指定すると正しく動きません。 レコード数を取得します。 ここで、field10(category)=text型の値に基づきレコード数を取得したいのですが、 $sql="select * from A where B='C'"; とするとレコード出力(index.php)で0を出力。 where句を指定せずに $sql="select * from A"; とするとレコード出力(index.php)で97を出力。 文字コード関係のQ&Aサイトを見ましたが、phpファイルの冒頭部分に $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); mysql_query("SET NAMES 'sjis'"); $selectdb = mysql_select_db($DBNAME, $con); を指定しています。 テーブルAに含まれるデータは、csv(,区切り)で、load data infile・・・しました。 ※Records:97 Deleted:0 Skipped:0 Warnings:0 他に考えられる原因・対処方法はありますでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • WHEREでヌルをスルーしたい

    いつもお世話になっております。 SQL文のワイルドカードについての質問なのですが、 SELECT 項目1 FROM 表 WHERE 項目1 LIKE '%' というSQLがあったとして、私は項目1のレコードがすべて返されるのかと思いました。 しかしこれだと項目1フィールドにNULLが入っている(何もデータが入っていない)場合、それは除かれてしまうようです。 NULLのレコードも含めてクエリを返してくれるような条件はあるのでしょうか?