
実行したい内容は、『同一ナンバー内で1番IDが低いコードNOが2のタイトルを出す』といった内容になります。
以下のように書いて実行したところ、『EXISTSを使わないサブクエリでは、サブクエリの選択リストには、式を1つだけしか使えません。と表示されました。』自身のSQL文に問題があるかもしれませんが、現状は下記のSQL文となっています。
"SELECT id, code, num, title FROM contents WHERE code=2 AND id IN (SELECT MIN(id), num FROM contents GROUP BY num)"
副問合せで、同一ナンバーで1番IDが低いIDを取得し、取得したIDをもとに
タイトルを出そうとしました。
どなたか御指導御願い願えませんでしょうか。
宜しく御願いいたします。
No.1ベストアンサー
- 回答日時:
まず、
IN句を使う場合、フィールドは1つしか指定できません。
例:
IN (SELECT MIN(id) FROM ...)
次に、
現状のSQL文では、「同一ナンバー内で1番IDが低いidをもつ」が満たせません。
numでの絞り込みがcontentsテーブルに対してなされて
いないからです。
主キーが分からないので正確ではないですが、下記が例です。
【例1】
SELECT [id], code, num, title
FROM contents AS A
INNER JOIN
(
SELECT
MIN([id]) AS minid,
num
FROM contents
GROUP BY
num
) AS B ON A.[id] = B.minid AND A.num = B.num
WHERE
A.code = 2
どうしてもWHERE句で絞り込みたいときは、IN句ではなく、
EXISTS句を使います。集計関数の項目を絞り込むので
HAVING句で絞り込みます。
【例2】
SELECT [id], code, num, title
FROM contents AS A
WHERE
A.code = 2
AND EXISTS
(
SELECT
MIN([id]) AS minid,
num
FROM contents
GROUP BY
num
HAVING
MIN([id]) = A.[id]
AND num = A.num
)
例1、例2のSQL文でやり方はあっていますので、
思った結果が得られない場合は、
調整してみて下さい。
No.2
- 回答日時:
IN ではなくて ANY を使うといいのでは?
SELECT id, code, num, title FROM contents WHERE code=2 AND id = ANY (SELECT MIN(id), num FROM contents GROUP BY num)
これだとINとほぼ同じ意味になるはずです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
VMware Player でCD-ROMドライ...
-
Excel2000でレーダーチャートの...
-
クエリ表示と、ADOで抽出したレ...
-
VMwareがCDドライブを認識する...
-
複数テーブルのGROUP BY の使い...
-
小人の読み方は?
-
Unionした最後にGROUP BYを追加...
-
selectした大量データをinsert...
-
OSPFのDRの選出基準について シ...
-
副問合せの書き方について
-
insertを高速化させたい
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
php+mysqlで複数選択削除について
-
【Transact-sql】 execの結果を...
-
グループ毎にある列の最大値の...
-
LEFT JOIN と GROUP BY
-
INで抽出した順番に並び替え(S...
-
PL/SQLの変数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
Unionした最後にGROUP BYを追加...
-
SQL Left Join で重複を排除す...
-
別のDB(Table)からの複数行の...
-
エラー 1068 (42000): 複数の主...
-
DB設計について
-
VIEWの元のテーブルのindexって...
-
同じサーバーで、異なるデータ...
-
SQLサーバから、項目の属性(型...
-
クエリ表示と、ADOで抽出したレ...
-
SQLにて特定の文字を除いた検索...
-
select文のwhere句に配列を入れ...
-
カラム名でseqとidではどちらが...
-
【SQL文】Insert into文で文法...
-
マイクラPC版のコマンドで効率...
-
Access パラメータクエリをcsv...
-
[MySQL] 1対多のリレーションで...
-
PL/SQLの変数について
-
MySQLにてCOUNTした値を更にCOUNT
おすすめ情報