合并来自不同表的两个查询并按公共列排序?

时间:2015-11-28 10:38:24

标签: mysql sql

我有这两个问题

SELECT  consejos.consejo as value,
                            consejos.id,
                            consejos.texto,
                            consejos.votos               
                    FROM consejos
                    ORDER BY fecha DESC

SELECT  preguntas.pregunta as value,
                            preguntas.id,
                            preguntas.texto,
                            preguntas.votos               
                    FROM preguntas
                    ORDER BY fecha DESC

是否有任何简单的方法可以将这两个结果放在同一个查询中并按fecha列排序?是否可以添加一个字段来确定哪个表是一行?

4 个答案:

答案 0 :(得分:1)

您可以使用union

SELECT value, id, texto, votos, source_table from (
  SELECT  consejos.consejo as value,
                              consejos.id,
                              consejos.texto,
                              consejos.votos,
                              'consejos' as source_table,
                              fecha               
                      FROM consejos
UNION
  SELECT  preguntas.pregunta as value,
                              preguntas.id,
                              preguntas.texto,
                              preguntas.votos,
                              'preguntas' as source_table,
                              fecha                              
                      FROM preguntas
) as A ORDER BY fecha DESC

修改 对于您的其他请求,要添加一个列,指示它来自哪个表 - 您只需添加到第一个选择'consejos' as source_table中的列列表,然后'preguntas' as source_table添加到第二个

第二次编辑(对于草莓,这是一个测试还是什么?我通过了吗?)?)fecha添加到内部查询中,但如果您不想要它,则不添加{1}

答案 1 :(得分:1)

使用UNION ALL

Select * From (
SELECT  consejos.consejo as value,
                            consejos.id,
                            consejos.texto,
                            consejos.votos               
                    FROM consejos

UNION ALL

SELECT  preguntas.pregunta as value,
                            preguntas.id,
                            preguntas.texto,
                            preguntas.votos               
                    FROM preguntas ) t
   ORDER BY t.fecha DESC

答案 2 :(得分:0)

试试这个:

SELECT consejos.consejo AS value
    ,consejos.id
    ,consejos.texto
    ,consejos.votos
FROM consejos
UNION ALL
SELECT preguntas.pregunta AS value
    ,preguntas.id
    ,preguntas.texto
    ,preguntas.votos
FROM preguntas
ORDER BY fecha DESC

答案 3 :(得分:0)

select id,texto,votos from ((SELECT consejos.consejo as value,
                            consejos.id as id,
                            consejos.texto as texto ,
                            consejos.votos  as votos             
                    FROM consejos) UNION (SELECT  preguntas.pregunta as value,
                            preguntas.id as id,
                            preguntas.texto as texto,
                            preguntas.votos  as votos             
                    FROM preguntas )) as tb ORDER BY fecha DESC