SQL SELECT多行,其中一行是MSSQL

时间:2017-02-08 09:05:11

标签: sql sql-server join where

安装后:

T1

[2,2638,10.0,20.0,30.0,40.0,50.0,60.0,70.0,590,2638]

T2

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

我要做的是从第二个表中选择所有条目,其中一个类似于11.1。我正在使用此查询:

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
t1.ID
t1.Name
t2.Item

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

但因为我做了"其中"在特定项目上我只得到一行。当只有1行匹配" 11.1&#34时,如何从t2获取所有行?

2 个答案:

答案 0 :(得分:1)

试试这个......

首先,您需要获取等于'11.1'的项的ID列表,然后您可以从列表中的表t2获取数据。您需要加入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')

答案 1 :(得分:0)

您应该使用子查询来获取与您的条件首先返回的所有元素具有相同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'))