有以下数据表
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
说明:
数据表结构:
表名(字段:类型)
Catalog 数据表记录不同suppliers提供不同的Parts的价格/************************** 本帖重点 **************************/
问题1: 找出仅供应红色零件的供应商的sids;
select c.sid
from parts as p, catalog as c
where p.pid=c.pid
group by c.sid
having count(*)=sum(case when c.color='red' then 1 else 0 end);
这条语句报错 : ERROR 1054 (42S22): Unknown column 'c.color' in 'having clause'
如果我将c.color改为color 则可以得出正确结果.
select c.sid
from parts as p, catalog as c
where p.pid=c.pid
group by c.sid
having count(*)=sum(case when color='red' then 1 else 0 end);请问各位大神
1.我这条语句写错了?可否贴出您的语句?
2.是不是case when不支持别名啊?这是一道笔试题,我做完出来之后才知道自己做错了,谢谢大家的指点.case when别名case when别名
Suppliers(sid:integer, sname:string, address:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)
说明:
数据表结构:
表名(字段:类型)
Catalog 数据表记录不同suppliers提供不同的Parts的价格/************************** 本帖重点 **************************/
问题1: 找出仅供应红色零件的供应商的sids;
select c.sid
from parts as p, catalog as c
where p.pid=c.pid
group by c.sid
having count(*)=sum(case when c.color='red' then 1 else 0 end);
这条语句报错 : ERROR 1054 (42S22): Unknown column 'c.color' in 'having clause'
如果我将c.color改为color 则可以得出正确结果.
select c.sid
from parts as p, catalog as c
where p.pid=c.pid
group by c.sid
having count(*)=sum(case when color='red' then 1 else 0 end);请问各位大神
1.我这条语句写错了?可否贴出您的语句?
2.是不是case when不支持别名啊?这是一道笔试题,我做完出来之后才知道自己做错了,谢谢大家的指点.case when别名case when别名
解决方案 »
- mysql字符串有空格的查询问题
- 有没有可能在不停服务情况下, 调整一个表的外键关系?
- 如果删除数据库指定内容?
- 导出导入数据的时候要怎么控制编码?
- 如何判断记录是否存在?
- SOS!!!我的mysql服务崩溃了。
- 请教如何将SQLServer中的数据库、表以及数据导入MySQL啊
- 哪里能下载到WIN2K上的mysql?我刚下载的mysql-4.1.0-alpha.zip里面没有setup.exe这个文件?
- 有谁会在postgresql中建立存储过程?
- Mysql数据库数据乱码怎么恢复?
- ERROR 1045 (28000): Access denied for user 'root'@'localhost'[灌水免进 有分了可以补给]
- mysql如何查找时间超过10分钟的记录?
http://www.cnblogs.com/summer_adai/archive/2011/10/28/2227605.html