答案 0 :(得分:1)
以下是我如何去做 - 我在SQL中编写它因为我比在LINQ上更好,但是从一个转换到另一个应该是直截了当的:
select
t1.id
, t1.value
from table1 as t1
inner join table2 as t21
on t21.idTable1 = t1.id
and t21.number = 1
inner join table2 as t23
on t23.idTable1 = t1.id
and t23.number = 3
inner join table2 as t24
on t24.idTable1 = t1.id
and t24.number = 4
这将连接到表2的一个子集三次,每次为您想要的值。使用“内连接”使逻辑等效于AND。
答案 1 :(得分:0)
使用子查询
从table_1中选择*,其中id为(从table_2中选择idtable1,其中数字为(1,3,4))
关节select * from table_1 t1 join table_2 t2 on t1.id = t2.idtable1 where t2.number in(1,3,4)
答案 2 :(得分:0)
它将是
select id,idTable1,number
from
table2
where idTable1 = 1
如果我正确理解了这个问题。你的问题有点难以理解。如果那里应该加入
select b.id,a.Idtable1,a.number
from table1 b ,table2 a
where b.id = a.Idtable1
答案 3 :(得分:0)
如果我没有弄错你想要什么,这可能会奏效。您需要加入to表格,然后检查您想要使用的条件。
SELECT a.id, a.value
FROM TABLE1 a
INNER JOIN TABLE2 b on a.id=b.idTable1
WHERE b.number in (1,3,4)
AND a.id = 1;
答案 4 :(得分:0)
第一个查询假定table2.number对于给定的id是唯一的。那可能不是真的。如果是:
select table1.id, table1.value
from table1
join table2
on table1.id = table2.idTable1
group by table1.id, table1.value
having count(*) = 3
where table2.number in (1,3,4)
如果'号码'可能是一个重复值(对于每个idTable1不是唯一的),那么我们需要确保我们在表2中加入不同的值:
select table1.id, table1.value
from table1
join (select distinct table2.idTable1, table2.number where table2.number in (1,3,4)) t2
on table1.id = t2.idTable1
group by table1.id, table1.value
having count(*) = 3