Sql 您可以在另一个查询中使用从查询中获得的数据吗?
假设我从SELECT查询中获得了一些数据。我可以稍后将其用作表吗,这意味着将其命名为某物,然后在其他查询中使用其行和列 我不能用我的生命来解决这个问题。我是初学者。这只是一个表,但我就是不能让查询工作。以下是我所拥有的: 酒店桌子和房间桌子(我只需要使用房间桌子;我提到的酒店只是作为理解的参考点) 房间有以下列:(数字,HID)-这是一个复合主键;Number是房间的数字,HID是房间所属酒店的ID。我还有一个专栏,名字。现在的问题是: 查找所有只有一间卧室的酒店 我尝试了(但失败了)从房间中选择所有HID,然后过滤“不存在”(至少有一个非单卧室命名房间的酒店),但我无法做到这一点Sql 您可以在另一个查询中使用从查询中获得的数据吗?,sql,sql-server,Sql,Sql Server,假设我从SELECT查询中获得了一些数据。我可以稍后将其用作表吗,这意味着将其命名为某物,然后在其他查询中使用其行和列 我不能用我的生命来解决这个问题。我是初学者。这只是一个表,但我就是不能让查询工作。以下是我所拥有的: 酒店桌子和房间桌子(我只需要使用房间桌子;我提到的酒店只是作为理解的参考点) 房间有以下列:(数字,HID)-这是一个复合主键;Number是房间的数字,HID是房间所属酒店的ID。我还有一个专栏,名字。现在的问题是: 查找所有只有一间卧室的酒店 我尝试了(但失败了)从房间中选
Room
Number HID Name
1 H1 OneBedroom
2 H2 OneBedroom
3 H1 OneBedroom
4 H1 OneBedroom
5 H2 TwoBedroom
6 H3 OneBedroom
Desired Output: HID
H1
H3
我怀疑像这样的事情会起作用
SELECT DISTINCT `hid` FROM `room` WHERE
`room`.`hid` NOT IN
(SELECT `hid` as `hid` FROM `room` WHERE `name` != "OneBedroom");
未经测试,可能是废话,但似乎它应该工作。基本上,内部查询会获取所有非单卧室房间的
hid
。然后,我们从一个完整的hid
列表中减去所有这些hid
。我怀疑这样做会起作用
SELECT DISTINCT `hid` FROM `room` WHERE
`room`.`hid` NOT IN
(SELECT `hid` as `hid` FROM `room` WHERE `name` != "OneBedroom");
未经测试,可能是废话,但似乎它应该工作。基本上,内部查询会获取所有非单卧室房间的
hid
。然后,我们从hid
的完整列表中减去所有这些hid
。我将从您描述的内容中得到一个类似的表格:
table Room
HID Number Name
----------------------------------------
1 101 OneBedroom
1 102 OneBedroom
1 103 TwoBedroom
1 201 Suite
2 101 OneBedroom
2 102 OneBedroom
2 103 OneBedroom
我假设它连接到一个桌子酒店:
table Hotel
HID name
------------------
1 StayOver
2 SleepTite
现在进行查询:
SELECT h.name
FROM Hotel h
WHERE h.HID NOT IN (SELECT r.HID
FROM Room r
WHERE name != 'OneBedroom');
这会给你们一个只有一间卧室的酒店名单
使用示例数据处理SQLite。应该没问题
编辑-基于编辑的问题:
SELECT h.HID . . .
而不是上面查询中的h.name。我将使用您描述的如下表:
table Room
HID Number Name
----------------------------------------
1 101 OneBedroom
1 102 OneBedroom
1 103 TwoBedroom
1 201 Suite
2 101 OneBedroom
2 102 OneBedroom
2 103 OneBedroom
我假设它连接到一个桌子酒店:
table Hotel
HID name
------------------
1 StayOver
2 SleepTite
现在进行查询:
SELECT h.name
FROM Hotel h
WHERE h.HID NOT IN (SELECT r.HID
FROM Room r
WHERE name != 'OneBedroom');
这会给你们一个只有一间卧室的酒店名单
使用示例数据处理SQLite。应该没问题
编辑-基于编辑的问题:
SELECT h.HID . . .
代替上面查询中的h.name。最简单的方法是使用
groupby
plushaving
和条件count
,因此不需要包含传统的子查询
此返回酒店包含所有room=“one卧房”
,请记住COUNT
仅计数values NNLL
SELECT `hid`
FROM `room`
GROUP BY `hid`
HAVING COUNT(CASE WHEN `name` != "OneBedroom" THEN 1 END ) = 0
至少有一间卧室被称为“一间卧室”`
CASE
的默认值为NULL
,因此不需要ELSE
part最简单的方法是使用groupby
加上have
具有条件计数
,因此不需要包含传统的子查询
此返回酒店包含所有room=“one卧房”
,请记住COUNT
仅计数values NNLL
SELECT `hid`
FROM `room`
GROUP BY `hid`
HAVING COUNT(CASE WHEN `name` != "OneBedroom" THEN 1 END ) = 0
至少有一间卧室被称为“一间卧室”`
CASE
的默认值为NULL
,因此不需要ELSE
部分向我们显示一些示例数据和期望的输出。即,所有房间都命名为onedoomy
的酒店,或至少有一个房间命名为onedoomy
的酒店?这称为子查询!需要表中的一些字段名。@CollinD我不想去一家所有房间都被称为一卧室的酒店所有房间都被称为一卧室的酒店向我们展示一些示例数据并要求输出。是不是所有房间都被称为一卧室的酒店,或者至少有一个房间名为“一间卧室”的酒店,这称为子查询!需要从您的表中获取一些字段名。@柯林斯我不想去一家所有房间都被称为“一卧室”的酒店所有房间都被称为“一卧室”的酒店!斯基尔兹兄弟!多谢了!斯基尔兹兄弟!谢谢