台灣最大程式設計社群網站
線上人數
700
 
會員總數:245969
討論主題:189549
歡迎您免費加入會員
討論區列表 >> MS SQL >> sql語法包含查詢問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
sql語法包含查詢問題
價值 : 50 QP  點閱數:741 回應數:3
樓主

choco
門外漢
0 38
626 77
發送站內信

我有兩個table

table A

id,tableguid
-------------
1,aaa
2,bbb

tableB

id,tableguid,cid
-------------
1,aaa,1
2,aaa,2
3,bbb,1
4,aaa,3


我現在要找出tableB.cid包含1跟2(有其他數字的沒關係)
然後join TableA 最後拋出TableA的資料
原本想說用in
但是in的包含是有1或有2就會拋出來
導致拋出一堆錯誤的資料

因此上面的資料我要查出來aaa的這一筆資料
bbb因為沒有cid=2所以不符合




搜尋相關Tags的文章: [ sql ] ,
本篇文章發表於2015-12-30 19:00
1樓
最有價值解答

Manto
檢舉此回應
有一種寫法
Table_A a
inner join Table_B b (on 條件 + cid =1)
inner join Table_B c (on 條件 + cid =2)
取 a 欄位並 group by
本篇文章回覆於2015-12-31 10:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
跑個迴圈把有1 也有2的抓出來 就是你要的答案吧

create table #rep(tableguid nvarchar(50))

declare @tableguid nvarchar(50)
declare @cnt int
DECLARE crx CURSOR FOR
select distinct tableguid from b
OPEN crx
FETCH NEXT FROM crx into @tableguid
WHILE(@@FETCH_STATUS=0)
BEGIN

set @cnt=0
if ( select count(*) from b where tableguid=@tableguid and cid=1) <>0
begin
set @cnt=@cnt+1
end
if ( select count(*) from b where tableguid=@tableguid and cid=2) <>0
begin
set @cnt=@cnt+1
end
if @cnt=2
begin
insert #rep
select @tableguid
end

FETCH NEXT from crx into @tableguid
END
CLOSE crx
DEALLOCATE crx

select * from #rep
本篇文章回覆於2016-01-04 14:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

choco
檢舉此回應
後來用了Manto 大大的方法
就有跑出我要的結果了
感謝~
本篇文章回覆於2016-01-05 12:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.