• ベストアンサー

クエリで30歳以上の人ランダムに3件抽出したいです。

Acceess2003のクエリで30歳以上の人からランダムに3件抽出したいです。 下記のSQLだと30歳以上の人は抽出されますが、ランダムな3件が抽出できません。ランダムな3件を抽出するにはどうすればいいでしょうか? ご指導お願いします。 SELECT テーブル1.名前, テーブル1.年齢, テーブル1.備考 FROM テーブル1 WHERE (((テーブル1.年齢)<"30"));

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

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

現在手持ちのテーブルから「ランダムな3件を抽出」するSQLが下記です。 SELECT TOP 3 Test.uid, Rnd([uid]) AS xx FROM Test ORDER BY Rnd([uid]); 乱数を生成して、毎回違うものを抽出するようにしています。「uid」がこのテーブルのプライマリーキーなのですが、ともかくこのテーブルのフィールドをRnd関数のパラメーターに与えるのがポイントです。 レコードごとに乱数を生成するので、レコード数が多い場合には何らかの工夫が必要かもしれません。

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

関連するQ&A

  • アクセスのクエリ 1文字以上を抽出

    アクセスのクエリの抽出条件で、「1文字以上」とする方法を教えてください。 抽出条件をビルドで作ってみたのですが、 勝手にダブルコーテーションがついてしまいます。 1文字以上の値はあるのに何も抽出されません。 sql文は SELECT [テーブル1].[フィールド1] FROM テーブル1 WHERE ((Len([テーブル1]![フィールド1])>"1")); となっています。 ご教授よろしくお願いします。

  • AccessのクエリでvbLfのみ抽出するには

    Access2010のクエリー(SQL)で vbLfかvbCrLfが含まれているレコードを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(10) & "*"; vbLfが含まれているレコードは抽出せず、 vbCrLfが含まれているレコードだけを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(13) & Chr(10) & "*"; でよいと思いますが、 vbCrLfが含まれているレコードは抽出せず、 vbLfが含まれているレコードだけを抽出するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。

  • ACCESSの更新クエリー活用方法の件(続き)

    ID 商品 価格 備考  フラグ という列をもつテーブルがあるとします。 こちらは、 テーブル名:商品名 としています。 これにたいして選択クエリーを使って、特定の商品だけを クエリーで引っ張ってきています。 クエリー名:抽出 このクエリー名:抽出で引っ張ってきたデータにあるフラグの列に「更新クエリー」で 1の数値を入れたいのですが、 それは更新クエリーでどのようにSQLをせっていするかたちになりますか。 更新クエリー名:更新 update 抽出元のテーブル set 任意のセル = 1 where 抽出の条件 update 商品名 set フラグ = 1 where 抽出 ; 上記方法、更新クエリーで上記SQLを設定しても、クエリー実行時に、 バラメータを要求され、結果 全てのテーブル列に1がふられます。 式が違うのでしょうか。あくまでもクエリーで抽出されたものだけに 1をふりたいのですが。 http://okwave.jp/qa/q7278856.html > http://okwave.jp/qa/q7277790.html の#1・#2です。 #1に「選択クエリは作れますか?」と書いたのをほったらかしにして、続きの質問とは・・・。 具体的なテーブル名・列名を提示してないので、イメージで書いてあるんだから 回答を丸写ししちゃダメでしょ。 > #1です。ごめんなさい。もっとシンプルに考えれば良いです。 デザインビューにしてSQLビューに切るかえる。 select 列 from 抽出元のテーブル where 抽出の条件 ; みたいなデータです。 where の前を書き換えます。 select 列 from 抽出元のテーブル の部分を update 抽出元のテーブル set 任意のセル = 1 としてください。

  • ACCESSクエリーで特定の項目を更新したい

    ACCESSでテーブルから抽出したクエリーの特定の列だけに 1という数字をふりたいのですが、 update 抽出元のテーブル set 任意のセル = 1 where クエリー名 更新クエリーで上記SQLを設定しても、クエリー実行時に、 バラメータを要求され、 全てのテーブル列に1がふられます。 式が違うのでしょうか。 デザインビューにしてSQLビューに切るかえる。 select 列 from 抽出元のテーブル where 抽出の条件 ; みたいなデータです。 where の前を書き換えます。 select 列 from 抽出元のテーブル の部分を update 抽出元のテーブル set 任意のセル = 1 としてください。 最終的には以下のイメージ update 抽出元のテーブル set 任意のセル = 1 where 抽出の条件 ;

  • ACCESS更新クエリー活用方法について

    ACCESSでテーブルから抽出したクエリーで表示された特定の列だけに 1という数字をふりたいのですが、 update 抽出元のテーブル set 任意のセル = 1 where クエリー名 上記方法、更新クエリーで上記SQLを設定しても、クエリー実行時に、 バラメータを要求され、結果 全てのテーブル列に1がふられます。 式が違うのでしょうか。あくまでもクエリーで抽出されたものだけに 1をふりたいのですが。 デザインビューにしてSQLビューに切るかえる。 select 列 from 抽出元のテーブル where 抽出の条件 ; みたいなデータです。 where の前を書き換えます。 select 列 from 抽出元のテーブル の部分を update 抽出元のテーブル set 任意のセル = 1 としてください。 最終的には以下のイメージ update 抽出元のテーブル set 任意のセル = 1 where 抽出の条件 ;

  • アクセスクエリ ハテナを抽出するには

    テーブルは 文字(フィールド) ? あ となっていて、 クエリで SELECT [テーブル1].文字 FROM テーブル1 WHERE ((([テーブル1].文字) Like "?")); とすると、 ? あ が抽出されます。 ?がワイルドカードとなり、1文字の文字列を抽出する、という条件になってしまったためだと思われますが、ワイルドカードではなく、ハテナとして抽出したい場合はどうすればいいでしょうか? エクセルのように、Like "~?"としたら、何も抽出されませんでした。

  • Accessのクエリで半角円マークが抽出できない

    いつもお世話になっております。 Windows XP(SP3) 上でAccess 2003 SP3を利用しているのですが クエリで"\"(半角円マーク)をWhere句に指定した際に 半角・全角とも抽出してしまい困っています。 回避策をご存知であれば教えてください。 ■サンプルデータ テーブル名を「テーブル1」登録データは次とします。 番号  名前(テキスト型)    説明 ---- ---------------------  -----------------  1 ああああ¥ああああ   #全角の円マーク  2 ああああ\ああああ    #半角の円マーク ■作成したクエリ SQLビューでいうと次になります。 SELECT 番号,名前 FROM テーブル1 WHERE 名前 Like "*\*" 【結果】 番号  名前(テキスト型)    説明 ---- ---------------------  -----------------  1 ああああ¥ああああ   #全角の円マークもヒットする  2 ああああ\ああああ    ■他に試したSQL (1)全角を明確に除外 SELECT テーブル1.番号, テーブル1.名前 FROM テーブル1 WHERE (((テーブル1.名前) Like "*\*" And (テーブル1.名前) Not Like "*¥*")); >>【結果】該当件数0件となりいずれもヒットしない (2)円マークをchrで指定 SELECT テーブル1.番号, テーブル1.名前 FROM テーブル1 WHERE 名前 Like ("*" & chr(92) & "*") >>【結果】2件ともヒット

  • クエリの抽出条件内のワイルドカードの使い方について

    毎度お世話になっております。 WindowsXP ,Access2003を使用しております。 以下の2つのテーブルがあります。 ・テーブル1 品番 A B ・テーブル2 品番 A AB BC D テーブル1の品番を含むテーブル2の品番(A,AB,BC)を抽出したいのです。 SELECT テーブル2.品番 FROM テーブル2, テーブル1 WHERE テーブル2.品番 Like "*[テーブル1].[品番]*" では文字列になるらしく1件も抽出されませんでした。 これはクエリで可能なのでしょうか。 ご教授お願いいたします。

  • ランダムに3件抽出

    DBから、ランダムに3件を抽出したいのですが、SQL文にて対応は可能でしょうか?ご存知の方がいましたら、ご教示をお願いいたします。

    • ベストアンサー
    • MySQL
  • 抽出が出来ないくらい遅いクエリ

    以下のようなクエリーを作成して検索を 行っているのですが、どうしても抽出が出来ないくらい 遅くどの部分で遅くしているのかが分からないため、 どなたか教えてもらえないでしょうか? ※足りない情報があればすみませんが、仰ってください。 なるべくプログラム(PHP等)を使わずクエリのみで 行いたいので、PHP云々の話しは無しでお願い致します。 最初の抽出テーブル(osi)と次の抽出テーブル(osday) をそれぞれ個別で動かすと普通の速度で抽出が旨く行きます が、それらをくっつけた形 select (省略) from osi,osday where osi.id=osday.id; とすると、抽出が行えない又は非常に遅いとなります。 ///////// 実際のクエリー文です ///////// select osday.odid,odctmid,saitemname,startday,endday from ( select odid,saitemname from order1 as o,sale as s where o.odid=s.saorderid and (o.odshipdue >= '2007-12-1 00:00:00' and o.odshipdue <= '2007-12-18 23:59:59') and (o.odcancelflag='0' or o.odcancelflag is null) and o.odclass<'4' and s.saregular='1' and s.saitemcode in (select itcode from item where itcategory='1') and odmakeday is not null ) osi , ( select odid,max(odctmid) as odctmid,to_char(min(o.odshipday), 'YYYY-MM-DD') as startday,to_char(max(o.odshipday), 'YYYY-MM-DD') as endday from order1 as o,sale as s where o.odid=s.saorderid and (o.odshipdue >= '2007-12-1 00:00:00' and o.odshipdue <= '2007-12-18 23:59:59') and (o.odcancelflag='0' or o.odcancelflag is null) and o.odclass<'4' and s.saregular='1' and s.saitemcode in (select itcode from item where itcategory='1') and odmakeday is not null group by o.odid ) osday where osi.odid=osday.odid; ///////////////////////////////////////////