急求SQL查询语句

hinavy 2008-10-18 05:23:41
有一表,字段如下
ID,ParentID,Title,UserID
1 0 testtitle 2
2 0 btesttitle 3
3 1 aaatesttitle 1
4 1 bbbbbbestg 1
其中ID为记录唯一标识,parentID=0表示为问题,其他的为回复,title表示问题标题


现在求SQL语句,查出所有当前用户曾参与过的所有问题,当前登陆用户ID为UserID=1

...全文
174 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pt1314917 2008-10-18
  • 打赏
  • 举报
回复


declare @userid int
set @userid=1
select * from 表名 a where (a.ParentID=0 and a.userid=@userid)
or exists(select 1 from 表名 where userid=a.userid and a.id=ParentID)



hinavy 2008-10-18
  • 打赏
  • 举报
回复
有一表,字段如下
ID,ParentID,Title,UserID
1 0 testtitle 2
2 0 btesttitle 3
3 1 aaatesttitle 1
4 1 bbbbbbestg 1
其中ID为记录唯一标识,parentID=0表示为问题,其他的为回复,title表示问题标题


现在求SQL语句,查出所有当前用户曾参与过的所有问题,当前登陆用户ID为UserID=1
ParentID是与ID相对应的,比如是ID为1的记录的回复,则ParentID=1

我想要一句SQL查询语句,主要是放在程序里查询,不是放在SQL分析器里用的,谢谢!!!

按上面的表查出来UserID=1的所有参与回复的主题只有一条记录
ID ParentID Title USerID
1 0 testtitle 2


请大家帮我写一下,谢谢了~~~
pt1314917 2008-10-18
  • 打赏
  • 举报
回复

--结果:
ID ParentID Title UserID
----------- ----------- ------------ -----------
1 0 testtitle 2
5 0 bbbbbbestg 1
pt1314917 2008-10-18
  • 打赏
  • 举报
回复
--> 测试数据: @s
declare @t table (ID int,ParentID int,Title varchar(12),UserID int)
insert into @t
select 1,0,'testtitle',2 union all
select 2,0,'btesttitle',3 union all
select 3,1,'aaatesttitle',1 union all
select 4,1,'bbbbbbestg',1 union all
select 5,0,'bbbbbbestg',1

declare @userid int
set @userid=1
select * from @t a where (a.ParentID=0 and a.userid=@userid)
or exists(select 1 from @t where userid=@userid and a.id=ParentID)
liangCK 2008-10-18
  • 打赏
  • 举报
回复
--> liangCK小梁 于2008-10-18
--> 生成测试数据: @T
DECLARE @T TABLE (ID INT,ParentID INT,Title VARCHAR(12),UserID INT)
INSERT INTO @T
SELECT 1,0,'testtitle',2 UNION ALL
SELECT 2,0,'btesttitle',3 UNION ALL
SELECT 3,1,'aaatesttitle',1 UNION ALL
SELECT 4,1,'bbbbbbestg',1

--SQL查询如下:

SELECT DISTINCT a.ID,a.Title
FROM @T AS a
JOIN
(
SELECT ParentID FROM @T
WHERE UserID=1
AND UserID<>0
) AS b
ON a.ID=b.ParentID

/*
ID Title
----------- ------------
1 testtitle

(1 行受影响)
*/
csdyyr 2008-10-18
  • 打赏
  • 举报
回复

DECLARE @TB TABLE(ID INT ,ParentID INT,Title VARCHAR(20),UserID INT)
INSERT @TB
SELECT 1, 0, 'testtitle', 2 UNION ALL
SELECT 2, 0, 'btesttitle', 3 UNION ALL
SELECT 3, 1, 'aaatesttitle', 1 UNION ALL
SELECT 4, 1, 'bbbbbbestg', 1

SELECT * FROM @TB WHERE UserID=1 AND ParentID<>0
/*
ID ParentID Title UserID
----------- ----------- -------------------- -----------
3 1 aaatesttitle 1
4 1 bbbbbbestg 1

(2 row(s) affected)

*/
liangCK 2008-10-18
  • 打赏
  • 举报
回复
--> liangCK小梁 于2008-10-18
--> 生成测试数据: @T
DECLARE @T TABLE (ID INT,ParentID INT,Title VARCHAR(12),UserID INT)
INSERT INTO @T
SELECT 1,0,'testtitle',2 UNION ALL
SELECT 2,0,'btesttitle',3 UNION ALL
SELECT 3,1,'aaatesttitle',1 UNION ALL
SELECT 4,1,'bbbbbbestg',1

--SQL查询如下:

SELECT DISTINCT a.ID,a.Title
FROM @T AS a
JOIN
(
SELECT ParentID FROM @T
WHERE UserID=1
) AS b
ON a.ID=b.ParentID

/*
ID Title
----------- ------------
1 testtitle

(1 行受影响)


*/
wxg22526451 2008-10-18
  • 打赏
  • 举报
回复
曾参与过的所有问题是指回复的,不包括发表的?
--> Test Data: @T
declare @T table ([ID] int,[ParentID] int,[Title] varchar(12),[UserID] int)
insert into @T
select 1,0,'testtitle',2 union all
select 2,0,'btesttitle',3 union all
select 3,1,'aaatesttitle',1 union all
select 4,1,'bbbbbbestg',1

select * from @T
--Code
select [ID],[Title] from @T
where [ID] in(select [ParentID] from @T where [ParentID]<>0 and [UserID]=1)

--Result
/*
ID Title
----------- ------------
1 testtitle
*/
-狙击手- 2008-10-18
  • 打赏
  • 举报
回复
------------------------------------
-- Author: happyflsytone
-- Date:2008-10-18 17:34:13
------------------------------------

-- Test Data: t2
IF OBJECT_ID('t2') IS NOT NULL
DROP TABLE t2
Go
CREATE TABLE t2(ID INT,ParentID NVARCHAR(1),Title NVARCHAR(12),UserID INT)
Go
INSERT INTO t2
SELECT 1,'0','testtitle',2 UNION ALL
SELECT 2,'0','btesttitle',3 UNION ALL
SELECT 3,'1','aaatesttitle',1 UNION ALL
SELECT 4,'1','bbbbbbestg',1
GO
--Start
select *
from t2 a
where exists(select 1 from t2 where userid = 1 and a.id = parentid)

--Result:
/*
ID ParentID Title UserID
----------- -------- ------------ -----------
1 0 testtitle 2

(1 行受影响)

*/
--End
pt1314917 2008-10-18
  • 打赏
  • 举报
回复
ID,ParentID,Title,UserID
1 0 testtitle 2
2 0 btesttitle 3
3 1 aaatesttitle 1
4 1 bbbbbbestg 1
------------------------------
楼主这表结构貌似有点问题。怎么知道id为3和4的是哪个问题的回复呢?

还有楼主想要的结果是什么?
-狙击手- 2008-10-18
  • 打赏
  • 举报
回复
select *
from ta a
where exists(select 1 from ta where userid = 1 and a.id = parentid)
csdyyr 2008-10-18
  • 打赏
  • 举报
回复

SELECT * FROM TB WHERE UserID=1 AND parentID<>0
liangCK 2008-10-18
  • 打赏
  • 举报
回复
ParentID与ID对应?..

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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