gpt4 book ai didi

php - 结合三个mysql语句

转载 作者:行者123 更新时间:2023-11-29 04:02:57 25 4
gpt4 key购买 nike

我正在尝试简化一些 mysql。我有三个选择和三个表:

SELECT pageid FROM thepage WHERE DATE(createdate)='2011-11-09' ORDER BY createdate DESC

SELECT urlid FROM themix WHERE pageid=...

SELECT link FROM theurl WHERE urlid=...

给定一个 createdate,它获取所有 pageid,然后转到第二个表并获取这些 pageid 的所有 urlid,然后获取所有这些 urlid 的链接。我现在正在使用 while 循环,但怀疑有一种方法可以将它们全部合并为一个。

有什么想法吗?

最佳答案

SELECT p.pageid
, u.link
FROM thepage p INNER JOIN themix m
ON p.pageid = m.pageid
INNER JOIN theurl u
ON m.urlid = u.urlid
WHERE DATE(p.createdate) = '2011-11-09'
ORDER BY p.createdate DESC

应该可以实现我的想法。如果您只需要唯一的 URL,请使用:

SELECT u.link
FROM thepage p
INNER JOIN themix m
ON p.pageid = m.pageid
INNER JOIN theurl u
ON m.urlid = u.urlid
WHERE DATE(p.createdate) = '2011-11-09'
GROUP BY m.urlid
ORDER BY MIN(p.createdate) DESC

旁注

WHERE DATE(p.createdate) = '2011-11-09'

将必须扫描整个page 表并为每一行调用DATE() 函数。您有两种选择可以使其更快:

createdate 更改为 DATE(从 DATETIMETIMESTAMP,现在是)并使用:

WHERE p.createdate = '2011-11-09'

或保持原样并使用:

WHERE p.createdate >= '2011-11-09'
AND p.createdate < '2011-11-10'

表名和列名最好没有前缀或后缀,就像您拥有的 the 一样。这不是更清晰(即使没有别名)吗?

SELECT url.link
FROM page
INNER JOIN mix
ON page.pageid = mix.pageid
INNER JOIN url
ON mix.urlid = url.urlid
WHERE DATE(page.createdate) = '2011-11-09'
ORDER BY page.createdate DESC

关于php - 结合三个mysql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079700/

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