在连接2个表时获取数据库上的特定行

时间:2016-04-05 06:18:04

标签: sql-server

例如我有2个表:

place                         facility
|placeID|address|price|       |facilityID|placeID|facilityname|
|   1   | add1  | pr1 |       |   1      |   1   | internet   |
|   2   | add2  | pr2 |       |   2      |   1   |   TV       |
                              |   3      |   2   | internet   |

我的程序是选择工具,然后返回特定值的行,例如,我想选择internettv,然后它将返回place with add1 not add2。如何使用查询执行此操作?

编辑: 通常输出会是这样的:

|placeID|address|price|facilityname|
|  1    | add1  | pr1 |  internet  |
|  1    | add1  | pr1 |     TV     |

我的预期出局将是:

|placeID|address|price|
|   1   |  add1 | pr1 |

所以我想我想合并具有相同值的行,这是可能的吗?

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT DISTINCT place.placeID, place.address, place.price
FROM facility 
INNER JOIN place ON facility.placeID = place.placeID
WHERE facilityname IN ('internet','TV')

答案 1 :(得分:0)

如果您只想要同时拥有互联网和电视服务的地址,您只需按地点分组并计算该地点附加的不同服务。

SELECT p.address
FROM place p
JOIN facility f
  ON p.placeID = f.placeID
WHERE f.facilityname IN ('TV', 'internet')
GROUP BY p.address
HAVING COUNT(DISTINCT f.facilityname) = 2