MySQL5.0.95で以下の条件をひとつのクエリで可能なのでしょうか?


1. a_id は "2" のレコード
2. a_no が "1" のレコードを必ず含める
3. a_rate が小さい順(昇順)
4. LIMIT は 3 件

2.の条件を組み込むことができずにいます。
どのように書けばいいでしょうか?
テーブル構造と希望の出力配列は補足に記入してあります。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/08/29 22:50:25
  • 終了:2013/08/30 09:43:52
id:appfb

質問者から

appfb2013/08/30 11:37:05

テーブル名:a_table(pkey a_id, a_no)

a_id(int), a_no(int), a_rate(float), a_value(varchar)
 2, 1,  0.98, あああ
 2, 2,  0.56, いいい
 2, 3,  0.00, ううう
 2, 4,  0.68, えええ
 2, 5,  0.54, おおお
 3, 1,  0.72, かかか
 3, 2,  0.76, ききき
 .....

取り出したい配列

Array
(
	[0] => Array
	(
		[a_id] => 2
		[a_no] => 3
		[a_rate] => 0.00
		[a_value] => ううう
	)
	[1] => Array
	(
		[a_id] => 2
		[a_no] => 5
		[a_rate] => 0.54
		[a_value] => おおお
	)
	[2] => Array
	(
		[a_id] => 2
		[a_no] => 1
		[a_rate] => 0.98
		[a_value] => あああ
	)
)

ベストアンサー

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042013/08/29 23:11:32

ポイント100pt

a_noが1の場合だけa_rateを-1にでも読み替えてしまえば、a_rate昇順の上から3件で取れますよね。

SELECT 
  a_id, a_no, 
  CASE a_no WHEN 1 THEN -1 ELSE a_rate END AS a_rate_modified, 
  a_value
FROM a_table
ORDER BY a_rate_modified
LIMIT 0,3

とこんな感じです。

id:appfb

はーーー!
そんなことができるのですか ・・・ 。
毎度毎度ありがとうございますm(_ _)m
早速試してみます。

2013/08/29 23:17:23
id:appfb

恐れ入りましたm(_ _)m
パーフェクトでございます。
CASE ってとても便利ですね。
また新しいことを覚えられてうれしいです。
感謝します。


ところで素朴な疑問なんですが、前回いただいた回答で LIMIT の後ろにセミコロンがついていますが今回はついていません。
http://q.hatena.ne.jp/1377483373
前回のセミコロンはあってもなくても動いているのですが、何か意味があるのでしょうか?

2013/08/30 02:45:42

その他の回答(0件)

id:appfb

質問者から

appfb2013/08/29 22:57:32

質問文を編集しました。詳細はこちら

id:Sampo No.1

Sampo回答回数556ベストアンサー獲得回数1042013/08/29 23:11:32ここでベストアンサー

ポイント100pt

a_noが1の場合だけa_rateを-1にでも読み替えてしまえば、a_rate昇順の上から3件で取れますよね。

SELECT 
  a_id, a_no, 
  CASE a_no WHEN 1 THEN -1 ELSE a_rate END AS a_rate_modified, 
  a_value
FROM a_table
ORDER BY a_rate_modified
LIMIT 0,3

とこんな感じです。

id:appfb

はーーー!
そんなことができるのですか ・・・ 。
毎度毎度ありがとうございますm(_ _)m
早速試してみます。

2013/08/29 23:17:23
id:appfb

恐れ入りましたm(_ _)m
パーフェクトでございます。
CASE ってとても便利ですね。
また新しいことを覚えられてうれしいです。
感謝します。


ところで素朴な疑問なんですが、前回いただいた回答で LIMIT の後ろにセミコロンがついていますが今回はついていません。
http://q.hatena.ne.jp/1377483373
前回のセミコロンはあってもなくても動いているのですが、何か意味があるのでしょうか?

2013/08/30 02:45:42
  • id:windofjuly
    うぃんど 2013/08/30 05:29:45
    >前回のセミコロンはあってもなくても動いている

    最後のセミコロンは一文の終了を意味します。

    正式なSQLとしてはセミコロン必須なのですが、
    phpからMySQLへのリクエストは今のところ一文だけしか送れないので、
    セミコロンは省略します。(書いても動きます。)
  • id:appfb
    了解しました。
    ご丁寧にありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません