【问题标题】:MYSQL order by another tables column but needs some (and) conditionsMYSQL 按另一个表列排序,但需要一些(和)条件
【发布时间】:2015-11-27 01:34:50
【问题描述】:

这是数据库表和一些记录

我想要实现的是 从产品排序条件(ORDER BY)中选择所有内容 首先,products_campaign end_date ASC。 二、产品评分DESC 但是 WHERE 条件是 products_campaign enable 等于 1

所以结果。我想将所有产品显示为排序,首先它有活动的活动(启用),如果没有,则按 end_date 排序,然后按分数排序。 提一下:有些产品在 products_campaign 中没有记录(例如productID:104)。 我尝试使用 LEFT JOIN,但不会将 productID 104 选择到结果列表中。

有什么帮助吗? 最好的问候

【问题讨论】:

    标签: mysql sql-order-by


    【解决方案1】:

    检查是否有帮助

    SELECT A.* 
    FROM PRODUCTS A LEFT OUTER JOIN 
      (SELECT * FROM PRODUCTS_CAMPAIGN WHERE ENABLE = 1) AS B
    ON A.PRODUCT_ID = B.PRODUCT_ID
    ORDER BY B.END_DATE ASC, A.SCORE DESC
    

    【讨论】:

    • 不,我尝试了 LEFT OUTER JOIN 但它不起作用。就像不会选择 productID 102 一样。因为启用是 0。我想选择所有产品作为主要要求。
    • 那么您的 where 条件 ENABLE = 1 是什么。编辑了我的答案。检查这是否是您所期望的
    • 仅 enable = 1 在 product_campaign 中的 productID 将在 end_date ASC 之前订购。如果在 product_campaign 中找不到(无记录或启用 = 0)将按产品表 product.score DESC 排序
    • 将您的预期输出添加到您的问题中
    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 2011-04-26
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2020-09-08
    相关资源
    最近更新 更多