如何在sql中查询某个字段不同值分别取一定数量.

温柔哥 2012-03-25 04:04:36
SELECT * FROM `表名` WHERE 类型="甲" ORDER BY rand() limit 0,3;
SELECT * FROM `表名` WHERE 类型="乙" ORDER BY rand() limit 0,1;
我想要的就是 取4条记录出来,其中 类型=甲有3条 类型=乙有1条
如何用一条sql语句执行.
望高手给出结果,
...全文
553 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2012-03-25
  • 打赏
  • 举报
回复
(SELECT * FROM `表名` WHERE 类型="甲" ORDER BY rand() limit 0,3)
union all
(SELECT * FROM `表名` WHERE 类型="乙" ORDER BY rand() limit 0,1);
温柔哥 2012-03-25
  • 打赏
  • 举报
回复
那你能帮帮我解决下这个问题不
温柔哥 2012-03-25
  • 打赏
  • 举报
回复
我这是mysql 不支持top阿
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tongfei8608 的回复:]

查询不出来阿..报错 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '3 * FROM `musicData` WHERE musicType=&quo……
[/Quote]

汗,Mysql的,你来错地方了。去对应的板块问问吧
温柔哥 2012-03-25
  • 打赏
  • 举报
回复
查询不出来阿..报错 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '3 * FROM `musicData` WHERE musicType="joke" union all SELECT TOP 1 * FROM `music' at line 1
  • 打赏
  • 举报
回复

select top 3 * from tracy where AZWZ='1330采面'
union all
select top 1* from tracy where AZWZ='223水仓'
/*
AZWZ PJZ ZDZ BCSJ
1330采面 0.33 0.34 2010-01-01 00:00:00.000
1330采面 0.33 0.34 2010-01-01 00:05:00.000
1330采面 0.33 0.34 2010-01-01 00:00:00.000
223水仓 0.33 0.34 2010-01-01 00:00:00.000
*/

感觉不用union all一条语句实现有难度

56,678

社区成员

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

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