SQL 查询 利用当前条件查询与它相关的上一条数据

qq_30890773 2018-05-07 02:27:08

id Process next shang num
1 氧化 气化 null 10
2 气化 火化 氧化 5
3 火化 不化 气化 3
4 不化 null 火化 1

通过ID为3的 查到ID为2的数据,请问这样怎么写?,ID为2的数据是不清楚的,只能通过ID3的shang字段获取ID2的数据
...全文
1197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenny6666 2018-05-20
  • 打赏
  • 举报
回复
利用子查询实现:select *from table1 where table1.use_Id=(select 字段 from table2)
中国风 2018-05-07
  • 打赏
  • 举报
回复
循环取记录,当ID为1时为最后一条 e.g.
DECLARE @id INT=3
;WITH temp 
AS
(
SELECT * 
FROM
(VALUES (1, '氧化', '气化', NULL, 10)
      , (2, '气化', '火化', '氧化', 5)
      , (3, '火化', '不化', '气化', 3)
      , (4, '不化', NULL, '火化', 1))temp (id, Process, next, shang, num)
)	
SELECT * FROM temp WHERE id%(SELECT COUNT(1) FROM temp)+1=@id
/*
id	Process	next	shang	num
2	气化	火化	氧化	5
*/
Kongdom12138 2018-05-07
  • 打赏
  • 举报
回复
CREATE TABLE #temp (
id INT,
Process NVARCHAR(20),
next NVARCHAR(20),
shang NVARCHAR(20),
num DECIMAL(20,0)
)

INSERT INTO #temp (id,Process,next,shang,num)
VALUES (1,'氧化','气化',NULL,10)
GO
INSERT INTO #temp (id,Process,next,shang,num)
VALUES (2,'气化','火化','氧化',5)
GO
INSERT INTO #temp (id,Process,next,shang,num)
VALUES (3,'火化','不化','气化',3)
GO
INSERT INTO #temp (id,Process,next,shang,num)
VALUES (4,'不化',NULL,'火化',1)
GO

SELECT b.* FROM #temp a
LEFT JOIN #temp b ON a.shang = b.Process AND b.next = a.Process
WHERE a.id = 3
二月十六 2018-05-07
  • 打赏
  • 举报
回复
Select * from 表 WHERE Process='气化'  --当前ID为3的shang值

22,209

社区成员

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

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