gpt4 book ai didi

SQLite3做一个SELECT,按多个跨表列排序

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:15 25 4
gpt4 key购买 nike

我正在尝试从 3 个表格中生成一个“历史记录/日志页面”,表格如下所示:

表A

CreationDate
ModifDate
LastAccessedDate
FileName

表B

Guid_TableA
CreationDate
ModifDate
LastAccessedDate
FileName

表C

Guid_TableA
LastModifDate
FileName

FWIW,尽管列名称相似,这些表中的日期之间没有关系。它们之间相关的唯一有效列是 Guid_TableA

我想要的是...

选择记录并按日期排序。 我正在尝试构建一个事件日志,因此像这样返回重复的条目是有效的(只要结果按日期正确排序)

(TableA)  file-1.txt    '01/01/2012 00:00:00' (CreationDate)
(TableA) file-1.txt '01/01/2012 00:00:01' (ModifDate)
(TableB) file-2.txt '01/01/2012 00:00:02' (CreationDate)
(TableA) file-1.txt '01/01/2012 00:00:03' (LastAccessedDate)

希望我的意图是明确的;我基本上想选择按日期排序的记录(即针对多个交叉表列排序,包括重复的条目)

我的问题是:这可能吗?如果是,怎么办?

最佳答案

您想使用 UNION ALL运算符合并多个选择的结果:

SELECT FileName, CreationDate AS Date FROM TableA
UNION ALL SELECT FileName, ModifDate FROM TableA
UNION ALL SELECT FileName, LastAccessDate FROM TableA
UNION ALL SELECT FileName, CreationDate FROM TableB
-- ...etc
ORDER BY Date;

如果您想要那些“TableA”和“CreationDate”注释,您也可以将它们添加为文字字符串:

SELECT 'TableA', FileName, CreationDate AS Date, 'CreationDate' FROM TableA
UNION ALL SELECT 'TableA', FileName, ModifDate, 'ModifDate' FROM TableA
UNION ALL SELECT 'TableA', FileName, LastAccessDate, 'LastAccessDate' FROM TableA
UNION ALL SELECT 'TableB', FileName, CreationDate, 'CreationDate' FROM TableB
-- ...etc
ORDER BY Date;

这给了我:

TableA|file-1.txt|01/01/2012 00:00:00|CreationDate
TableA|file-1.txt|01/01/2012 00:00:01|ModifDate
TableB|file-2.txt|01/01/2012 00:00:02|CreationDate
TableA|file-1.txt|01/01/2012 00:00:03|LastAccessDate

关于SQLite3做一个SELECT,按多个跨表列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com