【问题标题】:Advanced order by [closed][关闭]的高级订单
【发布时间】:2013-01-23 12:35:22
【问题描述】:

我正在导出一些记录以放入 Excel 并发送给客户,问题是让记录以正确的顺序从数据库中出来。

基本上我有一个带有股票代码(abc13424)的产品表,然后是产品名称(洗手液 - 香水,身体黄油 - 香水等)。

我混合了来自不同年份的股票代码,所以 abc11234、abc12834、abc13424 等。我需要实现的是基本上显示按产品名称购买的“手洗”分组的记录,然后最终拥有这些组内部和外部按股票代码排序。

样本结果:-

【问题讨论】:

  • 向我们展示具有所需结果的示例记录。
  • @user1372212 您想按年份订购产品的库存代码吗?你能不能也展示一下样本表来得到上面的结果?
  • 用示例更新,不,不是按年份。但需要他们根据名称分组为产品类型,然后按代码分组,还要对组进行排序。
  • 但这只是您的预期结果,而不是示例数据 =)
  • “产品类型”是什么意思?是-之前的名字部分吗?

标签: php mysql sql select


【解决方案1】:

看起来你搜索的东西是这样的:

SELECT * 
FROM `productTable`
ORDER BY `name`, `code`

您可以在ORDER BY 子句中列出任意数量的列。然后排序将使用您提到的第一列对结果数据进行排序。如果您在多行的第一列中有相同的条目,它们将按给定的第二列排序。如果它们再次相等,将使用第三列等等。

编辑

因此,根据您的评论,我们似乎需要拆分一列,以便进行适当的排序。

假设- 字符是分隔符,我们可以使用SUBSTRING_INDEX 来拆分name 列,如下所示:

SELECT *,
       SUBSTRING_INDEX( `name`, '-', 1) AS `category`
FROM `productTable`
ORDER BY `category`, `code`

【讨论】:

  • 这听起来不错(就像上面的答案)
  • 有些问题听起来需要更多……但实际上是一个简单的要求……:)
  • 这是不正确的,如上数据所示,name字段永远不会是同一个条目。本质上,它只是名称注释的前几个单词,仅按顺序排序
  • @user1372212 那么请向我们展示您的样本数据..(获得上述结果的样本数据)
  • 以上不是示例数据,它是我希望输出显示的示例。示例数据是上面显示的行。
猜你喜欢
  • 2012-07-29
  • 2012-05-16
  • 2011-01-22
  • 1970-01-01
  • 2012-02-03
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多