mysql - 在 Select Sql 语句中,使用未链接表和链接表有什么用
问题描述
在选择查询中,将未链接表或表与链接表一起使用的实际示例和用途是什么,因为我们获得的记录集只是重复了未链接表列的数据以及链接表数据。
就像有 3 张桌子一样:
tblMovies
tblStudentDetails
tblStudentAddress
tblMovies
未链接到任何表。tblStudentDetails
并tblStudentAddress
通过外键链接StudentId
在两者的列上。
那你能说,
select tblMovies.MovieName, tblStudentDetails.StudentName, tblStudentAddress.StudentCountry
from tblStudentMovies, tblStudentDetails
inner join tblStudentAddress ON tblStudentDetails.StudentId = tblStudentAddress.StudentId
tbl电影:
MovieName
--------------
Sundance
Flashdance
tbl学生详情:
StudentId StudentName
------------------------
1 Roger
2 Sam
tbl学生地址:
StudentId StudentCountry
---------------------------
1 America
2 France
那么我们得到的结果集是,
Sundance Roger America
Flashdance Roger America
Sundance Sam France
Flashdance Sam France
这里谈到现实生活场景,电影表和数据与其他 2 个学生表没有关系。
那么什么时候是这样的查询,它只是重复在现实生活中实际使用的未链接表记录。
就像你能举出使用这种查询的现实生活示例表的例子。
解决方案
这解决了问题的原始版本。
您的查询相当于:
Select T1.MovieName, T2.StudentName, T3.StudentCountry
from T1 join
T2
on T1.StudentId = T2.StudentId cross join
T3
如果这是您想要的,那么您应该明确说明cross join
. 并且JOIN
应该在实际参与的表上表示JOIN
。如果你想加入T1
,T2
然后加入它的笛卡尔积,你会这样做T3
。
最实际的用例是只T3
包含一行。
推荐阅读
- java - Maven 验证构建失败但 0 次失败
- admob - 我不能给用户奖励视频奖励
- c# - 在 SQL Server 中存储数百万个 100kb 的 PDF
- angular - Angular Material mat-table 不刷新数据
- r - read.dcf(path_desc) 中的 devtools 错误:开始的行“这对应于 ...”格式错误
- apache-spark - 从 CSV 读取字符串数组作为 Pyspark 中的数组
- ruby - Monkeypatch 数组并将数组元素设置为新值
- swift - 无法快速分享 pdf(仅限 WhatsApp)
- .net - 通常使函数调用超时(没有 Task/CancellationToken)
- reactjs - 如何动态改变material-ui的抽屉宽度?