【发布时间】:2015-06-05 16:43:44
【问题描述】:
我有一个包含以下值的数据库:
CREATE TABLE test (
Id CHAR (50),
Time TIMESTAMP ,
Value CHAR (50)
);
INSERT INTO test VALUES ('JOE', '2015-06-05 15:36:21', "ZONE1");
INSERT INTO test VALUES ('ANNA', '2015-06-05 14:27:35', "ZONE2");
INSERT INTO test VALUES ('JOE','2015-06-05 16:27:36', "ZONE2");
INSERT INTO test VALUES ('ANNA', '2015-06-05 14:45:31',"ZONE1");
INSERT INTO test VALUES ('JOE','2015-06-05 11:12:31', "ZONE4");
INSERT INTO test VALUES ('ANNA', '2015-06-05 10:25:21',"ZONE3");
我喜欢在最后一个 Zone 中找到用户
我尝试使用这条 SQL 指令:
SELECT DISTINCT(Id), MAX(Time) AS Time,
CONCAT('{ "Time":"', DATE_FORMAT(Time, '%Y-%e-%d %h:%i:%s'), '", "ID":"', CAST(Id AS CHAR), '", "Zone":"', Value, '" }') json
FROM test
GROUP BY Id;
但是,这是回报:
| Id | Time | json |
|------|------------------------|----------------------------------------------------------------------------------------------|
| ANNA | June, 05 2015 14:45:31 | { "Time":"2015-5-05 02:27:35", "ID":"ANNA", "Zone":"ZONE2" } |
| JOE | June, 05 2015 16:27:36 | { "Time":"2015-5-05 03:36:21", "ID":"JOE", "Zone":"ZONE1" } |
我不明白为什么.....它以不同的日期返回,无序 在第三列...
谢谢!
【问题讨论】:
-
您使用的是哪个 RDBMS / 数据库后端?
-
MYSQL5.1.61。但是,我在其他测试 sql server 中测试了这个测试并得到了相同的结果......
-
很公平,但它可能会影响您收到的答案。
-
嗨@Josep 我编辑了关于 AndriyM 建议的答案,对于这类问题有更好的解决方案,所以看看我的编辑。希望我的第一部分答案没有引起任何问题:) GL!
标签: mysql sql select distinct concat