mysql - 如何将 UNION 与两个具有 ORDER BY 的语句一起使用
问题描述
我正在尝试从不同的表中获取文件夹和文件名,并使用每个查询语句的结果,按它们的降序排序,update_date
然后使用UNION
.
如果我分别运行这两个查询,它确实有效,并且将根据日期的降序从数据库中检索结果。但是当我UNION
与他们一起使用时,它并没有给我正确的答案。
获得它的正确方法是什么?
(
SELECT create_date, folder_name AS actual_name, folder_id, folder_displayed_name AS displayed_name, update_date, delete_flag, NULL AS img_url, NULL AS protect_flag, NULL AS file_type, list_order
FROM aaaaa_estate.docs_folder
WHERE delete_flag =0
AND inside_of_folder = ''
ORDER BY update_date DESC
)
UNION (
SELECT create_date, file_name AS actual_name, id, displayed_name, update_date, delete_flag, img_url, protect_flag, file_type, list_order
FROM aaaaa_estate.docs_contract
WHERE delete_flag =0
AND inside_of = ''
ORDER BY update_date DESC
)
如果我在最后使用 Order By 子句。update_date
ORDER BY DESC
它根据我不想要的数据对所有数据进行排序。
我想向用户显示文档列表,例如 Google Drive、Always Folder first 和 files second 中的 Google 显示。他们每个人都排序update_date DESC
解决方案
您可以尝试以下 whereORDER BY
子句取决于两列:
SELECT * FROM
(
SELECT 1 qry_nr, create_date, folder_name AS actual_name, folder_id, folder_displayed_name AS displayed_name, update_date, delete_flag, NULL AS img_url, NULL AS protect_flag, NULL AS file_type, list_order
FROM aaaaa_estate.docs_folder
WHERE delete_flag =0
AND inside_of_folder = ''
UNION
SELECT 2 qry_nr, create_date, file_name AS actual_name, id, displayed_name, update_date, delete_flag, img_url, protect_flag, file_type, list_order
FROM aaaaa_estate.docs_contract
WHERE delete_flag =0
AND inside_of = ''
-- ORDER BY update_date DESC
) q
ORDER BY q.actual_name, q.qry_nr;
推荐阅读
- javascript - 如何按日期范围过滤日期数组?
- javascript - 用于用户名验证的 JavaScript 正则表达式
- android - Android:获取 ISO 639 alpha-2 代码中的用户语言(en、pt、jp...)
- java - jSerialComm SerialPort.getCommPorts() 抛出 java.lang.ExceptionInInitializerError
- tensorflow - 在 Tensorflow 中一次使用多个最小化操作会按预期工作吗?
- python - Python 否则无法正常工作
- linux - 如何让 grep 搜索我放入变量中的任何数字?
- swift - XCTestCase - 如何在包含字符串的 NSTextView 上断言?
- c++ - C++11 使用不同类型的随机分布共享相同的函数
- c++ - 如何将 C++ 输出捕获到 Bash 变量?