SQL SELECT 多行,其中一行,MSSQL

SQL SELECT multiple Lines where one line is like, MSSQL

以下设置:

t1

ID     Name      Price
1      Miller    50      
2      Smith     10
3      Someone   20

t2

ID    Item    Price
1     10.1    25
1     10.2    25
2     32.1    10
3     32.1    10
3     11.1    2
3     12.2    3
3     43.2    5

我要做的是 select 来自第二个 Table 的所有条目,其中一个类似于 11.1。我正在使用这个查询:

SELECT
t1.ID
t1.Name
t2.Item

FROM t1 
JOIN t2 on t1.ID = t2.ID
WHERE t2.item in ('11.1)

我应该得到以下结果:

ID     Name    Item
3      Someone 31.1
3      Someone 11.1
3      Someone 12.2
3      Someone 43.2

但是因为我对特定项目做了 "where",所以我只得到一行。当只有 1 行与“11.1”匹配时,如何从 t2 获取所有行?

试试这个...

首先需要获取等于'11.1'的item ID列表,然后可以从列表中获取tablet2的数据。您需要加入 t1 才能获得 name

Select 
   t2.ID, 
   t1.name Name, 
   t2.item Item
from t1 
join t2 
on t1.ID= t2.ID
where t2.ID in (select ID from t2 where item = '11.1')

您应该首先使用子查询来获取与您的条件返回的元素具有相同 ID 的所有元素。

SELECT 
  t2.ID, t2.Item, t1.Name
FROM 
  t1
JOIN
  t2
  ON t2.ID = t1.ID
WHERE t2.ID in (SELECT ID FROM t2 WHERE t2.item in ('11.1'))