mysql,联合查询和子查询怎么结合

Sandm_ 2015-03-23 02:03:42
mysql 联合查询和子查询怎么结合?联合查询出来的结果是多个,再使用子查询会报错:Subquery returns more than 1 row
SELECT COUNT(*) FROM tb_model WHERE flower_amount >= (SELECT flower_amount FROM tb_model WHERE id='3595c376-abcd-4e43-af79-98d42567e04c');和SELECT f.id,f.model_user_id,f.user_id,u.icon,m.description,m.name
FROM tb_model AS m,tb_user AS u,tb_favorite AS f
WHERE f.`user_id`={userId} AND m.`user_id`=f.`model_user_id` AND u.`id`= m.`user_id`;怎么结合使用?联合查询结果是多个的
...全文
258 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sandm_ 2015-05-27
  • 打赏
  • 举报
回复
好吧 对于多个返回结果 用= any 就可以解决了
Sandm_ 2015-03-26
  • 打赏
  • 举报
回复
tb_teacher中的student_id为tb_student_info的主键id 但并未做主外键关联 tb_results表中的student_id也是tb_student_info表中的id
Sandm_ 2015-03-26
  • 打赏
  • 举报
回复
CREATE TABLE `tb_results` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `student_id` int(11) DEFAULT NULL,
  `total_score` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tb_student_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `iocn` varchar(100) DEFAULT NULL,
  `sex` char(1) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tb_teacher` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `teacher_id` int(11) DEFAULT NULL,
  `student_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这是仿制的表结构,但是大致要求差不多了。三个表:tb_student_info中存储学生信息,tb_results为学生成绩,tb_teacher表中显示学生属于哪个班主任,要求是输入教师id得出教师所有的学生信息并且按照成绩由高到低排序返回: students_id icon name sex total_score rank 1 asd 小明 0 500 1 2 das 小红 1 499 2 输出类似于这样
ACMAIN_CHM 2015-03-23
  • 打赏
  • 举报
回复
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
rick-he 2015-03-23
  • 打赏
  • 举报
回复
flower_amount是什么类型的?可以用max吗? 还有SELECT flower_amount FROM tb_model WHERE user_id = f.`model_user_id` ORDER BY flower_amount DESC LIMIT 1其中ORDER BY flower_amount 是按某种关系排序,是不是可以只截断某个字段来操作
Sandm_ 2015-03-23
  • 打赏
  • 举报
回复
SELECT f.id,f.model_user_id,f.user_id,u.icon,m.description,m.name,m.`flower_amount`,(SELECT COUNT(1) FROM tb_model WHERE flower_amount>= (SELECT flower_amount FROM tb_model WHERE user_id = f.`model_user_id` ORDER BY flower_amount DESC LIMIT 1)) AS rank FROM tb_model AS m,tb_user AS u,tb_favorite AS f WHERE f.`user_id`='8a9f7d03-50cb-4c53-bbdc-24b278b17a85' AND m.`user_id`=f.`model_user_id` AND u.`id`= m.`user_id` AND m.user_id = f.`model_user_id`; 这是我自己写的,但是查询效率有些低,求大神给优化一下
Sandm_ 2015-03-23
  • 打赏
  • 举报
回复
返回结果就是多行的 - - 要的就是多行结果
zyb88325 2015-03-23
  • 打赏
  • 举报
回复
第一个sql的子查询要用count函数,不然子查询查出来会是多个行

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧