sql语句的问题!急急急~~~~~~~~~~

liushuiriji 2008-10-17 10:20:27
SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = 1) t
ORDER BY row DESC
这个查询结果只有一条数据,但是PJLX有三个不同的值,分别是(PJLX=1,PJLX=2,PJLX=3)我想要的结果和PJLX=1一样。
还有为什么我在这条sql语句上加上where row between 1 and 16 也就是变成
SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = 1) t
ORDER BY row DESC where row between 1 and 16 会出现where附近语法有错误?
小妹谢谢大家了!
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liushuiriji 2008-10-17
  • 打赏
  • 举报
回复
我想得到三条数据!没条数据都是PJLX=1的那种效果!谢谢了!
pt1314917 2008-10-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liushuiriji 的回复:]
如果我想得到我想要的结果!把sql语句改一改应该怎么改!也就是PJLX做为一个可变的参数,不给赋值!
[/Quote]

declare @pjlx int
set @pjlx=1
SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = @pjlx) t
ORDER BY row DESC

liushuiriji 2008-10-17
  • 打赏
  • 举报
回复
如果我想得到我想要的结果!把sql语句改一改应该怎么改!也就是PJLX做为一个可变的参数,不给赋值!
liushuiriji 2008-10-17
  • 打赏
  • 举报
回复
谢谢各位了!
liushuiriji 2008-10-17
  • 打赏
  • 举报
回复
我现在想知道第一个问题的答案!谢谢了!
pt1314917 2008-10-17
  • 打赏
  • 举报
回复
SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = 1) t
ORDER BY row DESC
这个查询结果只有一条数据,但是PJLX有三个不同的值,分别是(PJLX=1,PJLX=2,PJLX=3)我想要的结果和PJLX=1一样。
--------------------------
你这里加了条件过滤,如红色部分,自然只会出现PJLX=1的数据,而且还加上top 1,最后查询结果当然只有一条数据


SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = 1) t
ORDER BY row DESC where row between 1 and 16 会出现where附近语法有错误?
-------------
这样。。
SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = 1) t
where row between 1 and 16
ORDER BY row DESC
水族杰纶 2008-10-17
  • 打赏
  • 举报
回复
--TRY
SELECT TOP 1 *
FROM (SELECT row_number() OVER (ORDER BY a.pk) AS row, c.REALNAME, d .DMMC, a.*
FROM pjxxmx a, yhxxb c, dmb d
WHERE a.ccwlyr = c.userid AND d .dmlex = 'pjlx' AND a.pjlx = d .DMVALUE AND PJLX = 1) t where row between 1 and 16
ORDER BY row DESC

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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