php - 表连接上的 UNION ALL

标签 php mysql union union-all

我最近学习了如何使用 UNION ALL 命令。但是,我不知道如何将它与联接一起使用。

有人可以告诉我如何修改下面的查询,以便它在两个表上执行左连接 - gw_articles_usa 和 gw_articles_canada?

$stm = $pdo->prepare("SELECT WT.N, WT.URL, WT.Title,
 USA.URL, USA.Brief, USA.Article, USA.Pagedex, USA.Links
 FROM gw_topics WT
 LEFT JOIN gw_articles_usa USA ON USA.URL = WT.URL
 WHERE WT.URL = :MyURL");
 $stm->execute(array(
 'MyURL'=>$MyURL
 ));

最佳答案

如果美国和加拿大表具有相同的列名和类型,请在子选择中使用联合。

SELECT WT.N, WT.URL, WT.Title,
    COUNTRY.URL, COUNTRY.Brief, COUNTRY.Article, 
    COUNTRY.Pagedex, COUNTRY.Links
 FROM gw_topics WT
 LEFT JOIN (select * from gw_articles_usa UNION ALL select * from gw_articles_canada) COUNTRY 
    ON COUNTRY.URL = WT.URL
 WHERE WT.URL = :MyURL

如果两个表不匹配,您可以使用列名的别名来使它们匹配,或者使用常量/null 来表示缺失的列值,并使用另一个表的名称的别名。如果数据类型不匹配,可以使用 CAST 或其他转换函数使它们相同。如果其中一个表中缺少链接,您可以执行此操作。

select  URL, Brief, Article, Pagedex, Links from gw_articles_usa 
UNION ALL 
select URL, Brief, Article, Pagedex, null as Links from gw_articles_canada

这应该可以解决您的问题。

关于php - 表连接上的 UNION ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921417/

相关文章:

java - 在 Fedora 16 中为 Libre Office Base 设置 java 类路径

sql - 在 PostgreSQL 中将 2 个 View 合并为一个

php - 如何为此 DIV 进行 jQuery 选择

php - 大量数据的 HighChart 不起作用

mysql - 具有 3 个表的简短 SQL 挑战,最大/分组依据,连接和排序依据

php - 如何使用单个提交按钮插入更新

MySQL 创建高级查询

sql-server - SQL Server 2008 R2 : geometry data type cannot be selected as DISTINCT because it is not comparable

PHP 连接在加载时收到错误

php - 破解 WordPress 类别小部件