在PHP的查询中使用UNION

时间:2011-06-25 04:26:14

标签: php sql

我有一个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来做。

1 个答案:

答案 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)

或者,如果您的外部表具有名称字段,则可以包括该字段而不是空字符串。