【问题标题】:Mysql error with UNION query使用 UNION 查询的 Mysql 错误
【发布时间】:2016-02-29 03:32:21
【问题描述】:
select t1.tema,
    count(p.id_pregunta) as num_preguntas
from preguntas p
right join subtema s on p.id_subtema = s.id_subtema
join tema t on t.id_tema = s.id_tema
union
select t1.tema,
    count(r1.id_respuesta) as preg_respuesta
from respuestas r1
right join preguntas p1 on r1.id_pregunta = p1.id_pregunta
right join subtema s1 on p1.id_subtema = s1.id_subtema
right join tema t1 on t1.id_tema = s1.id_tema
group by t1.tema
order by preg_respuesta desc

这个查询有什么问题?我得到了这个:

错误 #1054 -“订单子句”中的未知列“preg_respuesta”

请帮帮我。

【问题讨论】:

  • 你能写出输出应该是什么样子吗?

标签: mysql sql join count union


【解决方案1】:

SELECT ... UNION 从第一个查询中获取其列名。试试

... ORDER BY num_preguntas DESC

.... ORDER BY 2 DESC

(因为您是按结果中的第 2列排序。)

【讨论】:

    【解决方案2】:

    我认为 count 列的别名存在问题。在第一个查询中,您在第二个查询中将其命名为 num_preguntas preg_respuesta 在精细结果中,此列的名称来自第一个查询 num_preguntas

    orger by preg_respuesta desc 更改为orger by num_preguntas desc

    【讨论】:

      【解决方案3】:

      这是别名问题...将表别名放在列preg_respuesta所属的位置。

      例如:IF preg_respuesta 列属于表 respuestas,其别名为 r1order by 看起来像:

      order by r1.preg_respuesta desc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 2011-02-26
        相关资源
        最近更新 更多