A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 旺丶财 中级黑马   /  2014-10-24 12:05  /  3845 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
我用的mysql数据库,需要用到 where in 。有一个Company表,一个Product表。
SELECT 企业名称 FROM
        (
                select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC
        )K
LIMIT 1

这一句从Product表返回商品数量最多的P_Company(企业名称)没问题,
下面这句加上了where in 为什么就不行了呢?
select * from product where P_Company IN
        (
        SELECT 企业名称 FROM
                (
                select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC
                )K
        LIMIT 1
)

最佳答案

查看完整内容

select * from product where P_Company IN ( SELECT 企业名称 FROM ( select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC )K where rownum

6 个回复

倒序浏览
select * from product where P_Company IN
        (
        SELECT 企业名称 FROM
                (
                select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC
                )K
       where rownum<2
)

改用rownum设定数量
回复 使用道具 举报
皮三藏 来自手机 中级黑马 2014-10-24 12:50:28
藤椅
where 后面的  P_Company 改成p.P_Company 再试试
回复 使用道具 举报
皮三藏 发表于 2014-10-24 12:50
where 后面的  P_Company 改成p.P_Company 再试试

还是不行
[SQL] select * from product where p.P_Company IN
        (
        SELECT 企业名称 FROM
                (
                select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC
                )K
        LIMIT 1
        )

[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
这个版本的MYSQL不支持?
回复 使用道具 举报
旺丶财 发表于 2014-10-24 12:57
还是不行
[SQL] select * from product where p.P_Company IN
        (

select * from product where P_Company IN
        (
        SELECT 企业名称 FROM
                (
                select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC
                )K
        LIMIT 1
        )
回复 使用道具 举报
换一种思路:
select * from product p HAVING p.P_Company=
        (
        SELECT 企业名称 FROM
                (
                select p.P_Company AS 企业名称,COUNT(p.P_Company) AS 产品总数 from product p GROUP BY p.P_Company ORDER BY 产品总数 DESC
                )K
        LIMIT 1
       )
回复 使用道具 举报
不清楚 啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马