【发布时间】:2020-11-16 17:48:33
【问题描述】:
我正在尝试开始使用到目前为止我不需要的子查询。如果我有这些表:
Books
--Id (Primary Key)
--Title (string)
--GenreId (Foreign Key)
和
Genre
--Id (Primary Key)
--Name (string)
我知道如果我想检索 Title 和 Name,那么我可以运行这个查询:
select b.Title, g.Name from Books b
join Genre g on b.GenreId=g.Id
我想做的是理解那和这之间的区别:
select b.Title from Books b
join (
select g.Id, g.Name from Genre g
)
as ge
on b.GenreId=ge.Id
go
我想知道为什么第二个查询只给我 Books 中的 Title 列而不是 Genre 中的 Id 或 Name 列?我的问题实际上是如何将第一个查询变成子查询并检索相同的结果?我想要 Books 中的 Title 和 Genre 中的 Name。
【问题讨论】:
-
“我想知道为什么第二个查询只给了我 Books 中的 Title 列,而不是 Genre 中的 Id 或 Name 列” 你还能期望什么 @ 987654325@... 如果我让你从桌子上拿起“书”,那里有书、笔和纸本,然后问你“为什么不拿起笔和纸”你责备自己没有这样做?
-
我期待这些结果来自内部的 select 语句。这就是问题的原因。
-
我明白你在说什么,但是如果你说“拿起书,然后拿起笔和纸”,而我只是拿起了书,我们会想为什么我没有不要也拿起笔和纸。这就是我的问题和误解的重点。
-
但这不是我问的,也不是你问的。
-
我问为什么我的问题中的第二个查询没有给我所有的列。
标签: sql sql-server