使用 UNION ALL SQL 查询获取更多值
Posted
技术标签:
【中文标题】使用 UNION ALL SQL 查询获取更多值【英文标题】:Getteing more values with UNION ALL SQL Query 【发布时间】:2012-01-03 23:59:53 【问题描述】:我正在使用此查询从两个表中获取结果:
SELECT * FROM (
SELECT parent_id as mID, count(*) as cnt
FROM wp_forum_posts
WHERE text LIKE '%$word%'
GROUP by 1
UNION ALL
SELECT id, count(*)
FROM wp_forum_threads
WHERE subject LIKE '%$word%'
GROUP by 1) x
ORDER BY 2, 1
我想从wp_forum_threads
中选择更多值。像subject
这样的值。
我怎样才能做到这一点?
简单地在id
后面添加是行不通的。那么查询没有返回结果。
【问题讨论】:
您的列必须匹配,但您可以用空字符串替换该 SELECT 中缺少的列。您仍然使用 AS 为它起别名。 换句话说,每个被 UNIONed 的 SELECT 中的列数必须相同。 【参考方案1】:UNION ALL 两部分的 select 中的列数应该相同。这意味着,例如,如果您想在查询的第二部分添加“主题”,则需要在查询的第一部分添加“占位符”:
SELECT * FROM (
SELECT parent_id as mID, NULL, count(*) as cnt
FROM wp_forum_posts
WHERE text LIKE '%$word%'
GROUP by 1
UNION ALL
SELECT id, subject, count(*)
FROM wp_forum_threads
WHERE subject LIKE '%$word%'
GROUP by 1) x
ORDER BY 2, 1
这应该可以。
【讨论】:
以上是关于使用 UNION ALL SQL 查询获取更多值的主要内容,如果未能解决你的问题,请参考以下文章