【问题标题】:Getteing more values with UNION ALL SQL Query使用 UNION ALL SQL 查询获取更多值
【发布时间】: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 中的列数必须相同。

标签: php mysql sql union-all


【解决方案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

这应该可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多