【问题标题】:SQL Order By Street Name then Street Number, Same ColumnSQL Order By Street Name then Street Number,同一列
【发布时间】:2023-02-22 08:51:17
【问题描述】:

我正在尝试按街道名称排序地址列表,然后是街道编号。此数据的两种形式都位于同一列中,即我的模式“数据”中的“地址”。

数据的格式类似于:

  • 27 朗郡巡回赛
  • 杜威路 109 号
  • 26 泽克大道
  • 1 朗郡巡回赛
  • 26信天翁路

我试过了:

SELECT * FROM data ORDER BY address;

这给了我:

  • 1 朗郡巡回赛
  • 26信天翁路
  • 26 泽克大道
  • 27 朗郡巡回赛
  • 杜威路 109 号

我也试过:

SELECT * FROM parcel_data.parcels ORDER BY CONVERT(SUBSTRING_INDEX(address, ' ', 1), UNSIGNED INTEGER);

这给了我一个不注意字母顺序但遵循数字的列表。 这看起来类似于:

  • 1 朗郡巡回赛
  • 26 Zeke Ln
  • 26信天翁路
  • 27 朗郡巡回赛
  • 杜威路 109 号

理想情况下,我正在寻找的输出是:

  • 26信天翁路
  • 杜威路 109 号
  • 1 朗郡巡回赛
  • 27 朗郡巡回赛
  • 26 泽克大道

首先按街道名称的字母顺序排列,然后对数字进行排序。

我怎么做?

TIA!

【问题讨论】:

  • Postgres 还是 MySQL?请仅标记您的实际数据库
  • @ysth 我的错——在这个项目中使用 MySQL

标签: mysql sql postgresql sql-order-by


【解决方案1】:

在 MySQL 中,您只需执行以下操作:

order by substring_index(address,' ',2),0+address,address

(最后一个仅用于非数字门牌号)

【讨论】:

  • 所以我实施了这个建议,尽管它仍然把数字作为主要的分组方法,我需要字母表更重要。如果有意义的话,我需要将所有 Albatross Rd 条目按数字顺序分组,然后是 Dewey Ln 条目,然后是 Longshire 和 Zeke 按编号顺序分组。你认为它也像一个group by吗?
猜你喜欢
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多