mysql union的列数不同

use*_*134 8 mysql

我知道联合查询必须具有相同数量的列.我试图从表中得到结果,comments并从表strings中得到多个连接的结果.我怎么这么正确?我还没有测试,因为我知道我会收到不同列数的错误.以下是我要尝试合并的两个查询.

查询1(字符串)

SELECT sub.actionid as usersub, 
                ftable.`last-time` as lastvisited, updatetable.recent as mostrecent, parent.* FROM `strings` as parent 
        LEFT JOIN subscribe sub on sub.actionid=parent.id AND sub.userid=:userid
        JOIN followers ftable on ((ftable.sid=parent.sid AND ftable.page='1') OR 
        (ftable.sid=parent.sid AND ftable.position=parent.position AND ftable.page='0') 
        OR (ftable.profile=parent.starter AND parent.guideline='1')) AND ftable.userid=:userid
        JOIN `update-recent` updatetable on 
        ((updatetable.sid=parent.sid AND updatetable.position=parent.position AND updatetable.pageid='0')
        OR (updatetable.profile=parent.starter) OR (updatetable.pageid=parent.pageid AND parent.pageid!=0))
        WHERE ftable.userid=:userid AND parent.deleted='0' GROUP BY parent.id 
Run Code Online (Sandbox Code Playgroud)

查询2(评论)

SELECT * FROM comments WHERE viewed='0' AND (`starter-id`=:userid OR respondid=:userid)
Run Code Online (Sandbox Code Playgroud)

我想按时间戳列posted(最近的)列出结果ORDER BY posted DESC

我如何结合这些查询?

Wha*_*ied 22

您可能希望选择列NULL以占用某些表中的空白区域.

表A:(id,column1)

表B:(id,column1,column2)

Select id, column1, null as column2 from tableA
UNION
Select id, column1, column2 from tableB
Run Code Online (Sandbox Code Playgroud)