mySqlのhaving句について
Posted: 2010年6月23日(水) 15:34
いつもお世話になっております。
mySqlでの質問です。
別スレでお見せしました掲示板について、
その後も可能性をさぐりつつ作り進めているのですが、
行き詰ってしまったところがあります。
一応回避はできるのですが、
どなたか分かりませんでしょうか...
「最小の id を持つレコードを取得する」クエリを投げようと、
最初、以下のようにしました。
[1]
SELECT * FROM T_integmessage having id=min(id)
↓
戻り値なし
ということで、エラーではなかったのですが戻り値が無く、
ちょっと戸惑いつつ、
とりあえず2段階に分け、
[2]
SELECT min(id) FROM T_integmessage
↓
min(id)
-------
10
としてmin(id)を取得してから、
以下のように[1]のmin(id)をマジックナンバー的にしたところ、
[3]
SELECT * FROM T_integmessage having id=10
↓
id text
-- ----
10 なにがし...
と、期待した結果が得られました。
一応、php 側で[2][3]を順に投げるようにすれば回避できますが、
[1]がダメな理由を知りたいのです。
どなたか分かりませんでしょうか...
mysqlサーバのバージョン: 4.0.27
http://dev.mysql.com/doc/refman/4.1/ja/subqueries.html
> MySQL バージョン 4.1 以降では、標準 SQL で規定されているサブクエリのすべての形式と操作に加え、MySQL 固有のいくつかの機能をサポートしています。
ということで、今使っているサーバは4.1より前なので、サブクエリは使えないようです。
実際、 SELECT * FROM T_integmessage having id=(SELECT min(id) FROM T_integmessage)
はエラーでした。
mySqlでの質問です。
別スレでお見せしました掲示板について、
その後も可能性をさぐりつつ作り進めているのですが、
行き詰ってしまったところがあります。
一応回避はできるのですが、
どなたか分かりませんでしょうか...
「最小の id を持つレコードを取得する」クエリを投げようと、
最初、以下のようにしました。
[1]
SELECT * FROM T_integmessage having id=min(id)
↓
戻り値なし
ということで、エラーではなかったのですが戻り値が無く、
ちょっと戸惑いつつ、
とりあえず2段階に分け、
[2]
SELECT min(id) FROM T_integmessage
↓
min(id)
-------
10
としてmin(id)を取得してから、
以下のように[1]のmin(id)をマジックナンバー的にしたところ、
[3]
SELECT * FROM T_integmessage having id=10
↓
id text
-- ----
10 なにがし...
と、期待した結果が得られました。
一応、php 側で[2][3]を順に投げるようにすれば回避できますが、
[1]がダメな理由を知りたいのです。
どなたか分かりませんでしょうか...
mysqlサーバのバージョン: 4.0.27
http://dev.mysql.com/doc/refman/4.1/ja/subqueries.html
> MySQL バージョン 4.1 以降では、標準 SQL で規定されているサブクエリのすべての形式と操作に加え、MySQL 固有のいくつかの機能をサポートしています。
ということで、今使っているサーバは4.1より前なので、サブクエリは使えないようです。
実際、 SELECT * FROM T_integmessage having id=(SELECT min(id) FROM T_integmessage)
はエラーでした。