如題,不知能不能用一條查詢陳述句實作,只取一條出來就可以了,請高人指點,萬分感謝!
如
ID A B
1 1 2
2 2 1
------------------------
查詢后,只要一條記錄就可以了
1 1 2
uj5u.com熱心網友回復:
top 1 ????
uj5u.com熱心網友回復:
select top 1 * from yourtable
uj5u.com熱心網友回復:
with t as (
select 1 as id,1 as a,2 as b
union all
select 2,2,1
)
select * from t a
cross apply (
select (
select ','+convert(varchar,val)
from t
unpivot(val for col in (a,b)) p
where id=a.id
order by val
for xml path('')
) as group_val
) b
不知道你是不是這個想法,group_val相同即認為所有值相同
uj5u.com熱心網友回復:
可能我沒表達清楚,我再補充下,看看大家看得明白我的問題沒,我換個說法,比如 A=“張三”,B="李四" 這條記錄,和 A=“李四”,B="張三" 這條記錄,程式都認為是相同的條件,所以只取其中一條就可以了,忽略其他的
ID A B
1 張三 李四
2 李四 張三
3 劉晶 周杰
按我的構思查詢后,我想得出這樣的結果
ID A B
1 張三 李四
3 劉晶 周杰
uj5u.com熱心網友回復:
with t as (
select 4 as id,'1' as a,'2' as b
union all select 5,'2','1'
union all select 1,'張三','李四'
union all select 2,'李四','張三'
union all select 3,'劉晶','周杰'
)
select t.* from (
select MIN(id) as id
from t a
cross apply (
select (
select ','+convert(varchar,val)
from t
unpivot(val for col in (a,b)) p
where id=a.id
order by val
for xml path('')
) as group_val
) b
group by group_val
) a
left join t on a.id=t.id
order by t.id
uj5u.com熱心網友回復:
CREATE TABLE #T
(ID INT IDENTITY(1,1),
NAME_1 NVARCHAR(10),
NAME_2 NVARCHAR(10))
INSERT INTO #T
SELECT '張三','李四' UNION ALL
SELECT '李四','張三' UNION ALL
SELECT '劉晶','周杰'
SELECT MIN(ID) AS ID,NAME_1,NAME_2
FROM
(SELECT ID,
CASE WHEN NAME_1<NAME_2 THEN NAME_1 ELSE NAME_2 END AS NAME_1,
CASE WHEN NAME_1>NAME_2 THEN NAME_1 ELSE NAME_2 END AS NAME_2
FROM #T) AS A
GROUP BY NAME_1,NAME_2
uj5u.com熱心網友回復:
非常感謝這位前輩,需要不明白俱體細節,依葫蘆照搬,的確是我想要的結果,給力,自己加了分頁,完美查詢!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/278701.html
標籤:疑難問題
