按日期排序不起作用?
Order by date isn't working?
我关注table:
CREATE TABLE logins (
type_id BIGINT NOT NULL,
created_date TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT now() NOT NULL);
INSERT INTO logins VALUES
(5, '1/26/2018 5:00:00 PM'),
(5 ,'1/26/2018 3:45:44 PM'),
(5, '1/26/2018 3:45:44 PM')
当我运行这段代码分开时:
SELECT l.type_id , l.created_date FROM logins l
WHERE
l.type_id = 5 AND
l.created_date BETWEEN ((CAST('1/26/2018' AS DATE) - 1) + TIME ' 17:00:00') AND
(CAST('1/26/2018' AS DATE) + TIME ' 17:00:00')
ORDER BY l.created_date DESC
它按我想要的方式排列日期,但是当我 运行 以下代码时:
WITH results as (SELECT l.type_id , l.created_date FROM logins l
WHERE
l.type_id = 5 AND
l.created_date BETWEEN ((CAST('1/26/2018' AS DATE) - 1) + TIME ' 17:00:00') AND
(CAST('1/26/2018' AS DATE) + TIME ' 17:00:00')
ORDER BY l.created_date DESC)
SELECT * FROM results
UNION
SELECT 0, NULL
WHERE NOT EXISTS (SELECT * FROM results )
order by 根本不起作用。我想知道原因。
将订单放在 sql 的末尾。此外,UNION 删除重复项,而 UNION ALL 不删除重复项。试试这个,你会得到和之前一样的结果。谢谢
WITH results as (SELECT l.type_id , l.created_date FROM logins l
WHERE
l.type_id = 5 AND
l.created_date BETWEEN ((CAST('1/26/2018' AS DATE) - 1) + TIME ' 17:00:00') AND
(CAST('1/26/2018' AS DATE) + TIME ' 17:00:00')
)
SELECT * FROM results
UNION
SELECT 0, NULL
WHERE NOT EXISTS (SELECT * FROM results )
ORDER BY created_date DESC
我关注table:
CREATE TABLE logins (
type_id BIGINT NOT NULL,
created_date TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT now() NOT NULL);
INSERT INTO logins VALUES
(5, '1/26/2018 5:00:00 PM'),
(5 ,'1/26/2018 3:45:44 PM'),
(5, '1/26/2018 3:45:44 PM')
当我运行这段代码分开时:
SELECT l.type_id , l.created_date FROM logins l
WHERE
l.type_id = 5 AND
l.created_date BETWEEN ((CAST('1/26/2018' AS DATE) - 1) + TIME ' 17:00:00') AND
(CAST('1/26/2018' AS DATE) + TIME ' 17:00:00')
ORDER BY l.created_date DESC
它按我想要的方式排列日期,但是当我 运行 以下代码时:
WITH results as (SELECT l.type_id , l.created_date FROM logins l
WHERE
l.type_id = 5 AND
l.created_date BETWEEN ((CAST('1/26/2018' AS DATE) - 1) + TIME ' 17:00:00') AND
(CAST('1/26/2018' AS DATE) + TIME ' 17:00:00')
ORDER BY l.created_date DESC)
SELECT * FROM results
UNION
SELECT 0, NULL
WHERE NOT EXISTS (SELECT * FROM results )
order by 根本不起作用。我想知道原因。
将订单放在 sql 的末尾。此外,UNION 删除重复项,而 UNION ALL 不删除重复项。试试这个,你会得到和之前一样的结果。谢谢
WITH results as (SELECT l.type_id , l.created_date FROM logins l
WHERE
l.type_id = 5 AND
l.created_date BETWEEN ((CAST('1/26/2018' AS DATE) - 1) + TIME ' 17:00:00') AND
(CAST('1/26/2018' AS DATE) + TIME ' 17:00:00')
)
SELECT * FROM results
UNION
SELECT 0, NULL
WHERE NOT EXISTS (SELECT * FROM results )
ORDER BY created_date DESC