好吧,我有2张这样的桌子:
表1
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
,FROM
和TO
代表表2中的用户。我希望找到FROM
中的某个人(表1中为Table1.user_id),表2中的ID
,exists
TO
({1}}(与Table1.user_id相同),表2的ID
相同
例如,记录16符合条件。因为它显示在From中,ID
为9,而TO
与表2中的ID
相同(TO和FROM对应于table1中的user_id为15)
我所做的是:
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 :(得分:1)
您可以尝试使用self join查找具有相同ID的记录,然后比较这些值。
select a.from from table1 a inner table1 b on a.id = b.id
where a.from = b.to
答案 1 :(得分: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) )
答案 2 :(得分: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);
答案 3 :(得分:0)
我不确定如果理解正确的话。
如果User_ID
中的Table_1
应该出现在表格From
和To
列中,并且对于这些记录,Table_2
中的ID也必须相同,
然后,对于那些条件,不仅符合您在示例中提到的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)