【发布时间】:2012-11-05 18:11:50
【问题描述】:
假设,我有如下 SQL 语句。
SELECT country_id, country_name
FROM country
WHERE country_id
IN(SELECT country_id FROM state
WHERE LENGTH(state_name)>=5
ORDER BY LENGTH(state_name) DESC);
它使用指定的子查询从country 表中获取state 表中对应州名称长度超过5 个或更多字符的所有国家/地区。
我只想检索state表中对应的前5个州在降序排序后长度为5个或更多字符的国家/地区。
在这种情况下,带有子查询的LIMIT 子句似乎不起作用,以下查询也不起作用。
SELECT country_id, country_name
FROM country
WHERE country_id
IN(SELECT country_id FROM state
WHERE LENGTH(state_name)>=5
ORDER BY LENGTH(state_name) DESC
LIMIT 5);
与子查询一起使用的LIMIT 子句导致如下指定的错误。
这个版本的 MySQL 还不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'
我使用的是 MySql 版本 5.1.48
有没有办法解决这种情况?
【问题讨论】:
-
第一个查询的子选择中的 order by 没有意义(它对
IN运算符没有影响)