【发布时间】:2011-09-09 19:56:42
【问题描述】:
我有下表和数据。
CREATE TABLE county_zip_code (
id_county INT UNSIGNED,
from_zip_code INT UNSIGNED,
to_zip_code INT UNSIGNED
);
INSERT INTO county_zip_code
(id_county, from_zip_code, to_zip_code)
VALUES
(12, 2580288, 0),
(12, 2580289, 0),
(12, 2580290, 0),
(12, 2580291, 0),
(12, 2580292, 0),
(15, 8670418, 0),
(15, 8670420, 0),
(15, 8670430, 0),
(16, 7600070, 0),
(16, 7600071, 0),
(16, 7600072, 0),
(16, 7600073, 0)
;
我想创建一个名为“county_zip_code1”的新表,并将连续序列替换为其端点:
id_county |来自_zip_code | to_zip_code 12 2580288 2580292 15 8670418 0 15 8670420 0 15 8670430 0 16 7600070 7600073
我该怎么做?
我已经阅读了 SO 问题“Evaluate sequential pairs of rows in SQLite”的一些答案,但是这种 SQL 对我来说太高级了。
【问题讨论】:
-
从样本
county_zip_code1中不清楚您在寻找什么。 (为什么id_county=15的行没有像其他行一样折叠成一行?)除了样本数据之外,您还应该始终包含对所需内容的描述。新表中的内容有哪些规则? -
因为我只想要顺序数据,比如 1,2,3,6,8,12,13,14,15 应该是 1-3,6,8,12-15 等等!我希望我清楚自己。提前致谢。
-
如果这是一次性创建新表所需的操作,难道不能直接编程吗?这可能不酷,也不是最有效的方法,但另一方面,它可能比等待 SO 提出答案要快得多。只需查询
order by id_country, zipcode,循环查找序列,然后将它们插入到新表中。 -
我有 198063 条记录,我相信它会减少记录的数量。我放置了100 real records of my database 和结果here。它来自 100 条记录到 12 条记录。我现在正尝试用 PHP 来做!再次感谢。
-
@Jonadabe:顺序数据就是简单的有序数据; “1、3、5”是一个序列。更好的描述是“连续序列”(操作词是“连续”)。
标签: php mysql select phpmyadmin