结果中带有额外字段的SQL UNION查询

Eri*_*rik 5 sql union select field

我有一个运行良好的SQL查询,除了我想在第一个数据库中带来另一列的结果.这就是我目前拥有的:

SELECT parts1.PART_NBR, parts1.NIIN
FROM parts1
WHERE parts1.PART_NBR='$pn'
UNION
SELECT parts2.REFERENCE_NUMBER, parts2.NIIN
FROM parts2
WHERE parts2.REFERENCE_NUMBER='$pn'
Run Code Online (Sandbox Code Playgroud)

这是我基本上想要的(当然这不会起作用):

SELECT parts1.PART_NBR, parts1.NIIN, parts1.ANOTHER_FIELD
FROM parts1
WHERE parts1.PART_NBR='$pn'
UNION
SELECT parts2.REFERENCE_NUMBER, parts2.NIIN
FROM parts2
WHERE parts2.REFERENCE_NUMBER='$pn'
Run Code Online (Sandbox Code Playgroud)

如何编写查询以便它执行相同的操作但实际上会在结果中带回额外的字段?

Ton*_*ony 5

创建一个空字段,返回NULL

SELECT parts1.PART_NBR, parts1.NIIN, parts1.ANOTHER_FIELD
FROM parts1
WHERE parts1.PART_NBR='$pn'
UNION ALL
SELECT parts2.REFERENCE_NUMBER, parts2.NIIN, NULL AS ANOTHER_FIELD
FROM parts2
WHERE parts2.REFERENCE_NUMBER='$pn'
Run Code Online (Sandbox Code Playgroud)

编辑: 从你的评论中你看到结果为

Part Number: 21223 NIIN: 008194914 Name: CAPACITOR
Part Number: 21223 NIIN: 011241926 Name: HEAT SINK
Part Number: 21223 NIIN: 003901600 Name: KNIFE
Part Number: 21223 NIIN: 003901600 Name: 
Part Number: 21223 NIIN: 008194914 Name:
Part Number: 21223 NIIN: 011241926 Name:
Run Code Online (Sandbox Code Playgroud)

第一个结果来自parts1第二个表格parts2,空白Name字段是您返回的位置NULL.

根据您提供的信息,我不明白为什么您使用a UNION来获取这两个表的结果,因为它们似乎包含相同的信息,除了第一个表也有该Name字段.

JOIN为了选择名称,部件/参考编号上的表格不是更好吗?

编辑: 正如您在评论中所述,之前您DISTINCT因使用而获得了结果集UNION.对于该NULL字段,行不再是唯一的,查询将返回所有行.

我在评论中说,我没有看到当前的UNION声明正在为你做什么,因为看起来相同的信息都是表.这个查询还有什么比你告诉我们的更多吗?