我目前正在为sql/phpmadmin开发一个在线大学服务器上的后端数据库系统。
我希望跨不同的表存储数据,以便客户:
我一直在使用csv文件上传excel上的数据,在phpmyadmin上标题列,而不是在excel文件上。
所有的文件都上传正确,除了一个缺陷-我的飞行代码顺序排序,但当我上传这些或某些其他文件,它上传他们的顺序错误。我想要1-18顺序,而不是1,10,11,然后2-9等等。
上传时,我选择了csv类型,并被告知将“包含”字段的“列”保留为空,并勾选“替换现有数据”框。
有人知道怎么解决这个问题吗?我不希望它影响我对这个数据库执行查询的方式。
如果需要,我可以包括表输出。如果我在上传后单击“编辑”,代码将显示正确的顺序如下:
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开始,应该以上升的数字顺序显示,并显示在它们旁边的时间。以下是不正确的顺序:
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发布于 2014-07-05 18:44:36
在varchar字段上使用ORDER BY使值"12“出现在值"2”之前--如果对字符串进行排序,这是正确的。在您的数据库中,或者至少按照您的顺序,您应该这样做:
ORDER BY cast(<my_varchar_field_of_numeric_values> as int)您还需要确保任何可能出现在该列中的非数字值(它是varchar字段,所以您永远不会知道)得到正确的处理。
https://stackoverflow.com/questions/24589198
复制相似问题