我有一个SQL查询,它使用UNION
链接3个表:
$sql ="(SELECT Drive.DriveID,Ram.Memory from Drive,Ram where Drive.DriveID = Ram.RamID) UNION
(SELECT Drive.DriveID,External.Memory from Drive, External where Drive.DriveID = External.ExtID)";
假设我也想获得Ram.Name。我该怎么做呢?如果我在第一个SELECT
语句中使用Ram.Name,则不会产生正确的结果。
解决这个问题的方法有哪些?我想用UNION
来做。
答案 0 :(得分:5)
在Union查询中,必须以相同的顺序在所有语句中指定所有列。
因此你需要
(SELECT Drive.DriveID,Ram.Memory,Ram.Name
from Drive,Ram
where Drive.DriveID = Ram.RamID)
UNION
(SELECT Drive.DriveID,External.Memory, '' as Name
from Drive, External
where Drive.DriveID = External.ExtID)
或者,如果您的外部表具有名称字段,则可以包括该字段而不是空字符串。