【问题标题】:Join MYSQL tables and sort by two fields?加入MYSQL表并按两个字段排序?
【发布时间】:2011-07-01 10:07:29
【问题描述】:

我在 MYSQL 中对表进行排序时遇到问题。

我的表格设置如下:

订单详情

  • Order_ID
  • shipping_cost
  • 印刷

产品详情

  • 身份证
  • Order_ID
  • SKU_location

我想选择所有打印的订单 = FALSE,但还要按运费排序,然后按 SKU_location 排序

如何将表连接到一个查询中,以便按 shipping_cost 和 SKU_location 排序,其中 print = false?

【问题讨论】:

    标签: sql mysql join sql-order-by


    【解决方案1】:

    您可以通过以下方式进行隐式 JOIN:

    SELECT * 
    FROM Order_details od
    JOIN Product_details pd
    ON od.Order_ID = pd.Order_ID
    WHERE od.printed = FALSE
    ORDER BY od.shipping_cost, pd.SKU_location
    

    每个表后面的文本将表重命名,以便在查询的后面部分中引用(即代码“Database.Long_Table_Name ltn”将表重命名为“ltn”)

    【讨论】:

    • 无需进行隐式连接... SELECT * FROM Order_details od INNER JOIN Product_details pd ON od.Order_ID = pd.Order_ID WHERE od.printed = FALSE ORDER BY od.shipping_cost, pd.SKU_location
    • 继乔迪的评论。请不要永久使用隐式连接。
    • @Jody, @Joe :您的建议是基于查询的可读性吗?我可以看到乔迪发布的查询正在执行昂贵的操作(连接)是多么清楚。
    • 我会说,考虑到索引等,默认情况下连接比 where 更昂贵是值得商榷的。对我来说,使用显式连接可以更容易地查看连接的一部分以及什么是实际 where 子句的一部分。在某些情况下,您可以在 2 个字段上进行连接,这在隐式连接中很容易错过。此外,在 MSSQL 2008 中已弃用隐式 OUTER 连接。这里有一个主题 - stackoverflow.com/questions/44917/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多