我想合并 WITH 子句和 SELECT 子句,以便兩者都在一個表查詢中。
其中一個“downloadinfo”包含有關指定用戶下載某些檔案的時間的資料,另一個是檔案詳細資訊的輸出,與另外兩個表(類別和再次下載資訊但僅用于下載計數器目的)連接。
選擇 計數器
SELECT FileAlias, FileEXT, FileSize, FileExtension, UploadDate, category, COUNT(id_downloadInfo) as "counter"
FROM files
JOIN categories ON files.category_id = categories.id_categories
JOIN users ON files.users_id_users = users.id_users
LEFT JOIN downloadinfo ON files.id_files = downloadinfo.files_id_files
WHERE organisations_id_organisations = 1 AND UserOnly = 0
GROUP BY files_id_files;
它產生如下結果

然后我有另一個查詢,我想與這個結果查詢合并。基本上,每次有人下載檔案計數器時,計數器都會增加 1,作為對表下載檔案的其他 SQL 查詢。它傳遞下載用戶 ID、下載檔案 ID 和下載日期時間。
我想過濾最新(或最新)的下載時間,所以我做了另一個查詢。
WITH added_row_number AS (
SELECT files_id_files, DownloadDate, ROW_NUMBER() OVER(PARTITION BY files_id_files
ORDER BY id_downloadInfo ASC) as newest
FROM downloadinfo
)
SELECT * FROM added_row_number
WHERE newest = 1;
它會產生我正在尋找的確切結果,即最新或最新的下載時間。

知道如何合并這兩個查詢以將其包含在查詢中嗎?如果“下載日期”是“計數器”旁邊的另一列,那將是最好的。
下載資訊表有:
- id_download 資訊 - 唯一和主鍵
- 下載日期 - 從 java 腳本傳遞的當前日期時間
- files_id_files - 檔案 id 是檔案表中的外鍵
- users_id_users - 用戶 ID,是用戶表中的外鍵
檔案表有:
- id_files - 唯一和主鍵
- users_id_users - 用戶表的外鍵
- 其他一些檔案資訊
uj5u.com熱心網友回復:
不知道您的預期答案是不是這樣。我的感覺是,您可以將 WITH 子句用作如下表
left join (WITH added_row_number AS (
SELECT files_id_files, DownloadDate, ROW_NUMBER() OVER(PARTITION BY files_id_files
ORDER BY id_downloadInfo ASC) as newest
FROM downloadinfo
) SELECT * FROM added_row_number
WHERE newest = 1) x on x.files_id_files = files.files_id_files
并訪問您的 count(*) 欄位旁邊的欄位,例如,X.DownloadDate
對可用的主鍵一無所知。所以我使用了“x.files_id_files = files.files_id_files”
但是為什么我們不能在 Count(*) 旁邊使用它作為帶有限制命令的子查詢
例子,
SELECT FileAlias, FileEXT, FileSize, FileExtension, UploadDate, category, COUNT(id_downloadInfo) as "counter",
(SELECT DownloadDate FROM downloadinfo di
where di.files_id_files = files.files_id_files
order by DownloadDate desc limit 1) as DownloadDate
FROM files
JOIN categories ON files.category_id = categories.id_categories
JOIN users ON files.users_id_users = users.id_users
LEFT JOIN downloadinfo ON files.id_files = downloadinfo.files_id_files
WHERE organisations_id_organisations = 1 AND UserOnly = 0
GROUP BY files_id_files;
但是如果您需要訪問比日期更多的列,WITH 命令就可以了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/482780.html
