gpt4 book ai didi

mysql - 运行查询,根据第一个表中的数据,从一个表和两个可能的其他表中的一个中选择数据

转载 作者:行者123 更新时间:2023-11-29 04:07:38 24 4
gpt4 key购买 nike

我目前正在更新一个可能会运行大量查询的站点!

简单形式,有3个表;

更新更新ID文件_文件IDPages_PageID更新日期

页面页面ID页面标题

文件文件编号文件标题

更新表中的 Files_FileID 链接到文件表中的 FileIDUpdates 表中的 Pages_PageID 链接到 Pages 表中的 PageID

目前代码在 Updates 表上执行选择查询,然后循环遍历这些结果,如果 Pages_PageID 有值,则在 Pages 表上运行另一个查询,如果 Files_FileID 有值,则在 Files 表上运行另一个查询.现在,当该站点大约 15 年前最初完成时,这可能没问题(如果实践不佳),但我正要添加近 2000 个新文件,这些文件将列在更新表中!

我想更改它(如果可能)以运行一个查询。这能做到吗?

我可以看到我可以将它分成两个查询,一个用于页面,一个用于文件,但是我会得到两个基于 UpdateDate 的结果,我无法以正确的顺序显示它们。

最佳答案

大概,您想获取正在更新的事物的类型和标题。

您的问题的答案是正确的加入应该是一个很大的好处。在这种情况下,以下可能会执行您想要的操作:

select u.updateid, updatedate,
(case when f.fileid is not null then 'File' else 'Page' end) as which,
coalesce(FileTitle, PageTitle) as title
from updates u left join
files f
on u.files_fileid = f.fileid left join
pages p
on u.pages_pageid = p.pageid;

这假定每条记录仅引用一页或一个文件,而不是两者。此外,为了性能,您需要在每个表中的主键上建立索引(如果它们被定义为主键,那么就有一个索引)。

关于mysql - 运行查询,根据第一个表中的数据,从一个表和两个可能的其他表中的一个中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26195179/

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