2

このクエリを使用して、2つのテーブルから結果を取得しています。

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は機能しません。その場合、クエリは結果を返しません。

4

1 に答える 1

3

UNION ALL の両方の部分の選択の列数は同じである必要があります。つまり、たとえば、クエリの 2 番目の部分に「件名」を追加したい場合は、クエリの 1 番目の部分に「プレースホルダー」を追加する必要があります。

    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

これはうまくいくはずです。

于 2012-01-04T00:47:13.187 に答える