0

自过去几天以来,这个问题一直困扰着我。这是我的想法:
一家超级大的零售店公司在许多不同的城市都有店,每家店都在特定的一天开业。将数据制成表格的表格将(至少)两列,
(1)城市名称(2)打开日期
理想的输出:多个列表,每个列表包含按时间顺序(按打开日期)排序的 10 个城市的给定城市的所有商店按字母顺序。
为了解决这个问题,我正在考虑:
Fetch #1:按字母顺序从表中获取 10 个城市
Fetch #2(循环中多次获取):迭代每个获取的城市,并获取
其所有各自的商店,按打开日期排序.

我想出的上述方法可以完成这项工作,但是我想知道是否有更简洁的方法可以做到这一点,这涉及在进行 fetch #1 本身时循环通过城市的商店,从而不会增加通过使用外部循环并执行许多 sql 执行而不是仅执行一次来降低时间复杂度。
那可能吗?一个sql语句?

4

1 回答 1

0
SELECT * FROM my_table NATURAL JOIN (
  SELECT DISTINCT city FROM my_table ORDER BY city LIMIT 10
) t ORDER BY city, opened

在应用程序中循环遍历结果集时拆分为单独的列表:只需检查city它自上次迭代以来是否已更改。在伪代码中:

for each record in resultset:
  if current city is not equal to last city then start new list
  output current record
  set last city to current city
于 2012-10-21T06:59:50.523 回答