lyn00750 发表于 2007-6-9 09:35

【求助】求助高人一个SQL语句

我想从lm_JobInfo表中和lm_GQInfo表中选出头8条记录,我这样子写提示列名 'Id' 不明确。我该怎么写呀,我试了UNION也不行,送10NB
select top 8 * from, order by Id desc

tir 发表于 2007-6-9 09:53

看不太懂楼主说的...
是要写lm_JobInfo.Id或者lm_GQInfo.Id吧

tir 发表于 2007-6-9 09:56

表结构贴上来吧

xcode 发表于 2007-6-9 10:04

lyn00750 发表于 2007-6-9 10:09

两个表中都有Id字段,我现在想用一个SQL语句选择出两个表中id按降序排列的8条信息(order by Id desc ),
select top 8 * from order by Id desc这样子写是查询【lm_GQInfo】中ID按降序排列的8条记录,但是如果是两个表的话,不知道怎么弄

yiylu 发表于 2007-6-9 10:11

貌似你的两表连接没有条件, 不知道你这个是什么数据库,
我知道 MySQL 一般是这样:
select * from lm_JobInfo, lm_GQInfo on(lm_JobInfo.id = lm_GQInfo.id) order by lm_JobInfo.id desc limit 8;

lyn00750 发表于 2007-6-9 10:22

恩,是的SQL数据库,楼上的我试了,提示ON附近语法有问题

tir 发表于 2007-6-9 10:31

没连接条件哦 晕
楼主要学学基础知识啊

lzking 发表于 2007-6-9 10:32

把ON改为 where试试

lyn00750 发表于 2007-6-9 10:33

可能是我没说清楚,是这两个表,因为是想获得最后发表的记录,所以按ID降序选出8条,但是要是让两个表的ID相同的话,就不对了,那选出的是一个表的最后几条记录和另一个表的相同ID的那几条记录,所以说6楼的ID=ID不行:')

lyn00750 发表于 2007-6-9 10:34

原帖由 tir 于 2007-6-9 10:31 发表 http://www.ibmnb.com/images/common/back.gif
没连接条件哦 晕
楼主要学学基础知识啊
:') :')

tir 发表于 2007-6-9 10:34

选出头8条记录
是从每个表里面选 还是从最终结果集里面选?

yiylu 发表于 2007-6-9 10:39

回复 #7 lyn00750 的帖子

微软的sql server?很久没摸了~

我上面给的适用于 MySQL ,与微软的不完全相同。
看这个行不行:

SELECT TOP 8 * FROM lm_JobInfo j JOIN lm_GQInfo q ON j.Id = q.Id ORDER BY j.Id DESC

表名列名大小写根据实际情况修改。

lyn00750 发表于 2007-6-9 10:41

每个表中选出4条,但是我要让它们显示在一起,但是ID不能相同呀

tir 发表于 2007-6-9 10:43

楼主的意思基本明白了
两个表的结构类似
要合并两个表的查询结果为一个结果集
应该是用union

lyn00750 发表于 2007-6-9 10:45

谢谢yiylu其实你那MYSQL的语句也可以,换成where就行了,这条也可以,但是ID=ID,那选出的是一个表的最后几条记录和另一个表的相同ID的那几条记录,所以不行了

lyn00750 发表于 2007-6-9 10:47

原帖由 tir 于 2007-6-9 10:43 发表 http://www.ibmnb.com/images/common/back.gif
楼主的意思基本明白了
两个表的结构类似
要合并两个表的查询结果为一个结果集
应该是用union
恩是的,就是要分别查询然后连接,但是我用UNION试了,老出错

tir 发表于 2007-6-9 10:55

select top 4 Id from lm_GQInfo group by Id desc
union
select top4 Id from lm_JobInfo group by Id desc
试试看吧 我水平也有限...**\

xcode 发表于 2007-6-9 11:09

lyn00750 发表于 2007-6-9 11:14

谢谢xcode我再看看

lyn00750 发表于 2007-6-9 11:32

:') :') :') 做不出来

tir 发表于 2007-6-9 11:41

原帖由 xcode 于 2007-6-9 11:09 发表 http://www.ibmnb.com/images/common/back.gif


这样肯定是不行的,原因我上面的贴子里已经说过了,使用UNION语句前面不能有GROUP BY,会报错,只能在最后用GROUP BY,但这个GROUP BY是针对UNION后的集产生作用的。

建议楼主用临时表解决吧。
貌似是
子句不能用order by
全句不能用group by

楼主试试
select top 4 Id from lm_GQInfo group by Id
union all
select top 4 Id from lm_JobInfo group by Id
至于分句怎么按降序排列 再慢慢想吧

[ 本帖最后由 tir 于 2007-6-9 11:48 编辑 ]

xcode 发表于 2007-6-9 11:44

tir 发表于 2007-6-9 11:45

没难度 多不好玩啊^v^

tir 发表于 2007-6-9 11:56

找了个装了MS Sql2005的机器试了一下 没问题了
select top 4 Id from lm_GQInfo group by Id
union all
select top 4 Id from lm_JobInfo group by Id
order by id desc

yiylu 发表于 2007-6-9 11:57

(select top 4 Id from lm_JobInfo)
union
(select top 4 Id from lm_GQInfo)
order by Id desc

这个应该可以了。谢谢小花,我自己也有收获~

lyn00750 发表于 2007-6-9 11:58

”能以 DISTINCT 方式选择 text、ntext 或 image 数据类型“。老是提示这个问题是怎么回事呀

yiylu 发表于 2007-6-9 11:59

回复 #25 tir 的帖子

比我快了一步,呵呵。
不过group by 是分组计算,除非有count(Id)之类的运算才需要按某列分组的。

lyn00750 发表于 2007-6-9 12:02

谢谢yiylu 和tir,果然实现了,id排序就是我想像中的,:D :D ,但是要是改成获取全部字段怎么改呀,一改错了

[ 本帖最后由 lyn00750 于 2007-6-9 12:03 编辑 ]

yiylu 发表于 2007-6-9 12:07

回复 #29 lyn00750 的帖子

我觉得应该表的列数要相同, 类型和顺序要一致, 最好把要查询的所有列都写一遍。
页: [1] 2
查看完整版本: 【求助】求助高人一个SQL语句