【问题标题】:MySQL union and order by helpMySQL union 和 order by help
【发布时间】:2011-09-02 03:30:50
【问题描述】:

以下代码有效,但是当我将 Order by id 更改为 Order by s.id 时,我收到此错误

“订单子句”中的未知列“s.id”

$construct =  "SELECT child.* FROM products child LEFT JOIN products parent on parent.name=child.parent INNER JOIN subscribe s ON (s.productid = parent.id) WHERE s.username='$logged' AND s.type='0'
        UNION
        SELECT child.* FROM products child LEFT JOIN products parent on parent.sid=child.sid INNER JOIN subscribe s ON (s.productid = parent.id) WHERE s.username='$logged' AND parent.keyword != child.name AND s.type='1'
        ORDER BY s.id DESC";

如何更改代码,使其按订阅表的 id s.id 排序?

【问题讨论】:

    标签: mysql sql sql-order-by union


    【解决方案1】:

    MySQL 正在尝试将 ORDER BY 应用于 UNION,但 UNION 只有 child 列(没有 child. 前缀),在 UNION 中没有 s.id。但是你可以添加一个:

    SELECT child.*, s.id as sid ...
    UNION
    SELECT child.*, s.id as sid ...
    ORDER BY sid DESC
    

    你需要给它一个别名,因为 UNION 会去掉表名或别名前缀。如果child 中有sid 列,则使用其他内容作为s.id 的别名。

    【讨论】:

      【解决方案2】:

      “INNER JOIN 订阅”

      看起来你可能想要:

      INNER JOIN `subscribe` AS `s`
      

      如果这不起作用,请发布以下输出:

      DESCRIBE subscribe;
      

      【讨论】:

        猜你喜欢
        • 2014-05-30
        • 2016-11-22
        • 2010-10-04
        • 2011-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-03
        • 2017-11-02
        相关资源
        最近更新 更多