2015-02-06 90 views
0

幸福感值存在,我有2個表是這樣的:

表1SQL其中,同時保留他們

ID | USER_ID 
1 0  
2 2  
3 15  
4 16  

表2

ID | FROM | TO 
9 0  2 
9 2  16 
9 16  15 
9 15  0 
10 15  2 

我想是非常簡單的,但我都快瘋了,考慮到ID,FROMTO代表表2中的用戶。我想要FROM(這是Table1.user_id)中的某人ID在表2中,例如它也是existsTO(這是相同的Table1.user_id)與表2相同ID

例如,記錄16是合格的。因爲它出現在從9 IDTO用9同ID表2(兩者並從對應於15 table1中爲user_id)

我所做的是:

select * 
from `Table1` 
where exists (select ID from `Table2` as p1 where FROM = 16) 
     and exists (select ID from `Table2` as p2 where ID = 16) 
     and p1.ID = p2.ID 

回答

0

這可能工作;

select * from table1 a where a.USER_ID in 
(select b.FROM from table2 b 
where exists (select c.id from table2 c 
where b.id = c.id and b.FROM = c.TO)) 
+0

我已經更新的問題,更多的細節。請檢查 – 2015-02-06 22:59:14

0

這是你想要的嗎?

select * 
from table1 t 
where exists (select 1 from table2 t2 where t2.`from` = t.id) and 
     exists (select 1 from table2 t3 where t3.`to` = t.id); 
+0

他們是兩個表而已,一個我們得到主要的id從(代表FROM和TO在2個不同的記錄中)和另一個表(x)包含FROM,TO,ID ...因此,我想獲得表格(x)ID – 2015-02-06 22:52:56

+0

@ Naughty.Coder。 。 。這確實不會改變查詢背後的想法。我做了改變。 – 2015-02-06 23:21:17

1

你可以嘗試使用self join找到具有相同ID的記錄,然後比較這兩個值。

select a.from from table1 a inner table1 b on a.id = b.id 
where a.from = b.to 
+1

'哪裏'也可以替換爲'和' – Kevin 2015-02-06 23:05:31

0

我不確定如果理解正確。

如果User_IDTable_1應該出現在From和從TABLE_2 To列,這些記錄也ID在Table_2必須是相同的,

那麼對於這些​​條件將有資格不僅User_ID 16和15爲您在你的例子中提到但也爲0和2.

假設這是正確的。

那就試試這個代碼(MySQL中,你可能要改變一些語法):

SELECT A.* 
FROM Table_1 AS A 
INNER JOIN Table_2 AS B ON (A.USER_ID=B.FROM) 
INNER JOIN Table_2 AS C ON (A.USER_ID=C.TO AND C.ID = B.ID) 
相關問題