首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入到SQL中的CSV数据以错误的顺序显示数据。

导入到SQL中的CSV数据以错误的顺序显示数据。
EN

Stack Overflow用户
提问于 2014-07-05 18:08:30
回答 1查看 634关注 0票数 0

我目前正在为sql/phpmadmin开发一个在线大学服务器上的后端数据库系统。

我希望跨不同的表存储数据,以便客户:

  1. 可以搜索到可用的航班和航班调度官
  2. 将能够从表中查看数据,并在特定的日子里为特定的航班分配机组人员。

我一直在使用csv文件上传excel上的数据,在phpmyadmin上标题列,而不是在excel文件上。

所有的文件都上传正确,除了一个缺陷-我的飞行代码顺序排序,但当我上传这些或某些其他文件,它上传他们的顺序错误。我想要1-18顺序,而不是1,10,11,然后2-9等等。

上传时,我选择了csv类型,并被告知将“包含”字段的“列”保留为空,并勾选“替换现有数据”框。

有人知道怎么解决这个问题吗?我不希望它影响我对这个数据库执行查询的方式。

如果需要,我可以包括表输出。如果我在上传后单击“编辑”,代码将显示正确的顺序如下:

代码语言:javascript
复制
REPLACE INTO `routes` VALUES ('1', 'FWL-101', 'BFS', 'LGW', '600', '710')# 1 row affected.
REPLACE INTO `routes` VALUES ('2', 'FWL-102', 'LGW', 'BFS', '700', '810')# 1 row affected.
REPLACE INTO `routes` VALUES ('3', 'FWL-103', 'BFS', 'LGW', '800', '910')# 1 row affected.
REPLACE INTO `routes` VALUES ('4', 'FWL-104', 'LGW', 'BFS', '900', '1010')# 1 row affected.
REPLACE INTO `routes` VALUES ('5', 'FWL-105', 'BFS', 'LGW', '1000', '1110')# 1 row affected.
REPLACE INTO `routes` VALUES ('6', 'FWL-106', 'LGW', 'BFS', '1100', '1210')# 1 row affected.
REPLACE INTO `routes` VALUES ('7', 'FWL-107', 'BFS', 'BRU', '700', '915')# 1 row affected.
REPLACE INTO `routes` VALUES ('8', 'FWL-108', 'BRU', 'BFS', '800', '1015')# 1 row affected.
REPLACE INTO `routes` VALUES ('9', 'FWL-109', 'BFS', 'HAM', '600', '840')# 1 row affected.
REPLACE INTO `routes` VALUES ('10', 'FWL-110', 'HAM', 'BFS', '700', '940')# 1 row affected.
REPLACE INTO `routes` VALUES ('11', 'FWL-111', 'BFS', 'GNB', '1000', '1215')# 1 row affected.
REPLACE INTO `routes` VALUES ('12', 'FWL-112', 'GNB', 'BFS', '1100', '1415')# 1 row affected.
REPLACE INTO `routes` VALUES ('13', 'FWL-113', 'LGW', 'BRU', '700', '905')# 1 row affected.
REPLACE INTO `routes` VALUES ('14', 'FWL-114', 'BRU', 'LGW', '800', '1005')# 1 row affected.
REPLACE INTO `routes` VALUES ('15', 'FWL-115', 'LGW', 'HAM', '600', '850')# 1 row affected.
REPLACE INTO `routes` VALUES ('16', 'FWL-116', 'HAM', 'LGW', '700', '950')# 1 row affected.
REPLACE INTO `routes` VALUES ('17', 'FWL-117', 'LGW', 'GRB', '1000', '1200')# 1 row affected.
REPLACE INTO `routes` VALUES ('18', 'FWL-118', 'GRB', 'LGW', '1100', '1400')# 1 row affected.

但是,当我上传csv文件后刷新数据库时,它显示如下:

战斗代码以FWL开始,应该以上升的数字顺序显示,并显示在它们旁边的时间。以下是不正确的顺序:

代码语言:javascript
复制
Edit Edit
 Copy Copy
 Delete Delete
1
FWL-101
BFS
LGW
600
710

Edit Edit
 Copy Copy
 Delete Delete
10
FWL-110
HAM
BFS
700
940

Edit Edit
 Copy Copy
 Delete Delete
11
FWL-111
BFS
GNB
1000
1215

Edit Edit
 Copy Copy
 Delete Delete
12
FWL-112
GNB
BFS
1100
1415

Edit Edit
 Copy Copy
 Delete Delete
13
FWL-113
LGW
BRU
700
905

Edit Edit
 Copy Copy
 Delete Delete
14
FWL-114
BRU
LGW
800
1005

Edit Edit
 Copy Copy
 Delete Delete
15
FWL-115
LGW
HAM
600
850

Edit Edit
 Copy Copy
 Delete Delete
16
FWL-116
HAM
LGW
700
950

Edit Edit
 Copy Copy
 Delete Delete
17
FWL-117
LGW
GRB
1000
1200

Edit Edit
 Copy Copy
 Delete Delete
18
FWL-118
GRB
LGW
1100
1400

Edit Edit
 Copy Copy
 Delete Delete
2
FWL-102
LGW
BFS
700
810

Edit Edit
 Copy Copy
 Delete Delete
3
FWL-103
BFS
LGW
800
910

Edit Edit
 Copy Copy
 Delete Delete
4
FWL-104
LGW
BFS
900
1010

Edit Edit
 Copy Copy
 Delete Delete
5
FWL-105
BFS
LGW
1000
1110

Edit Edit
 Copy Copy
 Delete Delete
6
FWL-106
LGW
BFS
1100
1210

Edit Edit
 Copy Copy
 Delete Delete
7
FWL-107
BFS
BRU
700
915

Edit Edit
 Copy Copy
 Delete Delete
8
FWL-108
BRU
BFS
800
1015

Edit Edit
 Copy Copy
 Delete Delete
9
FWL-109
BFS
HAM
600
840
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 18:44:36

在varchar字段上使用ORDER BY使值"12“出现在值"2”之前--如果对字符串进行排序,这是正确的。在您的数据库中,或者至少按照您的顺序,您应该这样做:

代码语言:javascript
复制
ORDER BY cast(<my_varchar_field_of_numeric_values> as int)

您还需要确保任何可能出现在该列中的非数字值(它是varchar字段,所以您永远不会知道)得到正确的处理。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24589198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档