- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の条件に該当する結果を、それぞれ2件ずつ取得したい)
複数の条件に該当する結果を取得したい
このQ&Aのポイント
- PostgreSQL 7で同一テーブルから複数の条件に該当する結果を取得したい場合、異なる値を持つ列から2件ずつ取得し、さらにランダムな2件を取得する方法について困っています。
- SQLの例としては、'列~の値が■のものを2件、列~の値が▲のものを2件、列~の値が●のものを2件、それ以外のものからランダムに2件を取得'という条件ですが、現在のクエリでは'limit 2'でparse errorが発生してしまいます。
- 上記のSQL定義でビューを作成する方法についても相談したいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
unionを使っているため、limit使用時に全体でのlimitなのか各SELECT文ごとのlimitなのかでわからずエラーになるようです。 そこで、括弧で括ってやるといいです。 ところで、■▲●で2件取得のところは ORDER BYでソートしなくていいんでしょうか? 該当する列が元々2件だけしかないなら別ですが・・・。 (select * from table where culumn = '■' limit 2) union (select * from table where culumn = '▲' limit 2) union (select * from table where culumn = '●' limit 2) union (select * from table where culumn != '■' and culumn != '▲'and culumn != '●' order by random() limit 2)
お礼
ありがとうございます。 教えていただいた方法で期待通りに動きました。 括弧でくくるという発想がでてきませんでした。基礎からやり直します。ありがとうございました。