mssql联合查询问题[满意追加分]

查找数据库同一数据表name='abc'的数据,结果条数不确定,有可能为0条数据,最多12条数据。当不满足12条数据时,再查找name='123'的数据,条数加上前面na... 查找数据库同一数据表name='abc'的数据,结果条数不确定,有可能为0条数据,最多12条数据。当不满足12条数据时,再查找name='123'的数据,条数加上前面name='abc'的数据,刚好12条。

要求:
1:结果要显示出name='abc'的全部数据。【当总条数小于12条时】
2:能按照id来排序,当name='abc'比如能查出3条,但有2条数据是最新添加的,也就是id【自增】最大的,结果要能降序,升序都先列出满足name='abc'的全部数据

一条sql语句完成
to : shutao917
top 12后面缺少*
union 后面要跟all才行,
这样查询出来的结果不满足要求,会出现第一个条件的数据没有

数据格式为:
id name
1 123
2 123
3 123
4 123
5 123
6 abc
7 123
8 123
9 123
10 123
11 123
12 123
13 123
14 123
15 123
16 123
17 abc
18 abc

mailking2001的代码拷进去执行完全正确的.
pjw_efan 的代码拷进去执行只显示了name='123'的数据列
刚好和我想要的结果写反了。在name后面加上desc就是正确的。
name='abc'的在前面。
mailking先回的帖子,就给他分吧
展开
 我来答
wuweido
2008-11-19 · 超过18用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:31.9万
展开全部
(1)但有2条数据是最新添加的,也就是id【自增】最大的,结果要能降序,升序都先列出满足name='abc'的全部数据

这个不太理解,

(2)pjw_efan 应该是对的,

(3)UNION 跟不跟 ALL主要看你要求不要求记录中存在重复记录。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mailking2001
2008-11-19 · TA获得超过817个赞
知道小有建树答主
回答量:1037
采纳率:100%
帮助的人:754万
展开全部
select top 12 * from table where name='abc' or name='123' order by
(case when name='abc' then 1 when name='123' then 0 else -1 end ) desc , ID desc

这是查询前12条name='abc' 或者name='123'的语句 排序的顺序 name='abc'的总是排在前面,不够了使用name='123'来补,可以在前面的基础上使用ID来排序
可以降序也可以升序 (升序要吧 ID 后面的desc 去掉)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6e7a37325
2008-11-19 · TA获得超过900个赞
知道小有建树答主
回答量:432
采纳率:0%
帮助的人:273万
展开全部
select * from(

select count(name),name,(case name when 'abc' then '2',when '123' then 1 end) as x from ttt where name in ('abc','123') group by name,x) where x>(
case count(name) when <12 then 0 when >12 then 1 end) order by name,id desc

不知道对不对!呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pjw_efan
2008-11-19 · 超过18用户采纳过TA的回答
知道答主
回答量:125
采纳率:50%
帮助的人:44.8万
展开全部
SELECT TOP 12 *
FROM (SELECT TOP 12 *
FROM 表
WHERE name = 'abc'
UNION
SELECT TOP 12 *
FROM 表
WHERE name = '123') a
ORDER BY Name,id
如果是123在前面就在name后面加上 desc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shutao917
2008-11-19 · TA获得超过1213个赞
知道大有可为答主
回答量:2199
采纳率:0%
帮助的人:3129万
展开全部
select top 12 from ttt where name='abc' or name='123'
order by name desc,id
这样吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式