dポイントプレゼントキャンペーン実施中!

お世話になります。

以下のSQL文のイメージでselectの結果をさらにselectしたいのですが”subquery has too many columns”というエラーを吐かれます。
Postgreに合った書き方がお分かりでしたら教えてください。
よろしくお願いします。


select *
from [DB名]
where [パスワード] = 'test'
IN ( select * from [DB名] where [ユーザID]='1111' order by [更新日] desc limit 3)


[やりたいこと]
テストDBからユーザIDが1111の行を更新日をキーに降順で並べ、先頭から3行分を取り出す。
その3行からパスワードが"test"のものをselectしたい。

A 回答 (2件)

select *


from ( select * from [DB名] where [ユーザID]='1111' order by [更新日] desc limit 3)
where [パスワード] = 'test'

って感じでしょうか。
手元にテスト環境が無いので未検証です。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/09/09 20:09

No.1さんの回答でいいと思いますが、記載のSQLのおかしい点を。



IN条件を使うなら、
項目 IN (値のリスト)
という感じです。

記載のSQLであれば、
select *
from [DB名]
where [パスワード] = 'test'
and [更新日] IN (select [更新日] from [DB名] where [ユーザID]='1111' order by [更新日] desc limit 3);
となると思います。

まぁ、これでは[やりたいこと]には合わないのですが。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/09/09 20:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す