【发布时间】:2014-05-08 08:40:01
【问题描述】:
我对这个简单的 INNER JOIN 查询有以下疑问。
我有这两个表必须连接在一起:
第一个表名为 VulnerabilityFix,包含以下列:
Id: int 身份
修复名称:varchar
供应商:varchar
标题:varchar
版本:varchar
第二个表名为VulnerabilityAlertDocument_VulnerabilityFix(这会将前一个表绑定到另一个表,但此时并不重要)并包含以下列:
VulnerabilityAlertDocumentId: int
VulnerabilityFixId: int
现在,在我的数据库中,VulnerabilityFix 表只包含一个空记录(该记录有一个 id,但所有其他字段都是空\null),事实上,如果我执行选择 *,我会得到:
select * from VulnerabilityFix
Id FixName Vendor Title Version
1
进入 VulnerabilityAlertDocument_VulnerabilityFix 我有这样的事情:
select * from VulnerabilityAlertDocument_VulnerabilityFix
VulnerabilityAlertDocumentId VulnerabilityFixId
78385 1
78386 1
....................................................
....................................................
....................................................
78398 1
好的,所以我希望通过 VulnerabilityAlertDocument_VulnerabilityFix 表的 VulnerabilityAlertDocumentId 字段的值来加入这两个表,我获得所有相关的记录在 VulnerabilityFix 表中。
所以在这种情况下,我打算检索上一个唯一具有 id(值等于 1)且所有其他字段为空\null 的记录。
所以我的查询是:
SELECT VF.* FROM VulnerabilityAlertDocument_VulnerabilityFix VAD_VF
INNER JOIN VulnerabilityFix VF ON VAD_VF.VulnerabilityAlertDocumentId = VF.Id
WHERE VAD_VF.VulnerabilityAlertDocumentId = 1
问题是,当我执行此查询时,我获得了一组空记录,而不是我期望获得的唯一记录。
为什么?我错过了什么?
Tnx
【问题讨论】:
-
查看示例数据,我在 VulnerabilityAlertDocument_VulnerabilityFix 表中没有看到 VulnerabilityAlertDocumentId = 1 的记录。
-
MySQL 不是 SQL Server
标签: mysql sql sql-server database rdbms