gpt4 book ai didi

PHP Echo Mysql 数据来自 2 个表 BY 最新数据

转载 作者:行者123 更新时间:2023-11-29 21:07:51 26 4
gpt4 key购买 nike

所以我试图从 2 个不同的表中回显 10 个最新数据。我试过了

$stmt60 = $db->prepare("SELECT * FROM 54x2 ORDER BY date_time DESC LIMIT 5");
$stmt60->execute();
$stmt61 = $db->prepare("SELECT * FROM dd ORDER BY date_time DESC LIMIT 5");
$stmt61->execute();
$row60 = $stmt60->fetch();
$row61 = $stmt61->fetch();

我还将它存储在大量的数组中,如下所示:

$var = array($row60['date_time'], $row62['date_time'], $row64['date_time'], $row66['date_time'], $row68['date_time'], $row70['date_time'], $row72['date_time'], $row74['date_time'], $row76['date_time'], $row78['date_time']);
$var7 = array($row61['date_time'], $row63['date_time'], $row65['date_time'], $row67['date_time'], $row69['date_time'], $row71['date_time'], $row73['date_time'], $row75['date_time'], $row77['date_time'], $row79['date_time']);

这样做了大约 10 次,偏移量增加了 1,然后做了 100 个 if 语句检查哪个是较新的,但我尝试了几个小时这样做,但无法让它工作。有没有一种更简单的方法可以做到这一点,而无需编写 100-200 个 if 语句?

最佳答案

选项 1:联合

这样问题就迎刃而解了。列数应该相同,但是您可以控制要获取的内容,因此您可以通过指定要获取的确切列来进行安排(除非这些是完全不同的结果并且您需要来自每种类型的完全不同的数据)

SQL:

(SELECT date_time,a,b,c FROM table_a ORDER BY date_time DESC LIMIT 5)
UNION
(SELECT date_time,a,b,c FROM table_b ORDER BY date_time DESC LIMIT 5)
ORDER BY date_time DESC
<小时/>

选项 2:单次传递

这个想法是每次比较两个当前元素并移动一个指针(较大的一个)并保持第二个指针不变时,(一起)循环两个结果 - 直到到达两个结果的末尾

$stmt60 = $db->prepare("SELECT * FROM 54x2 ORDER BY date_time DESC LIMIT 5");
$stmt60->execute();
$stmt61 = $db->prepare("SELECT * FROM dd ORDER BY date_time DESC LIMIT 5");
$stmt61->execute();

$row60 = $stmt60->fetch();
$row61 = $stmt61->fetch();
do
{
if($row60 && (!$row61 || $row60['date_time']>$row61['date_time']))
{
var_dump($row60); // output row60
$row60 = $stmt60->fetch();
}
if($row61 && (!$row60 || $row61['date_time']>=$row60['date_time']))
{
var_dump($row61); // output row61
$row61 = $stmt61->fetch();
}
}
while($row60 || $row61);
<小时/>

选项 3:合并和排序

我可能甚至不应该提及这个,因为内存消耗和效率都比选项 #2 差得多。

但是,您可以创建从这两个语句获取的所有元素的单个数组,然后在 php 中对结果进行排序(按 usortarray_multisort )

关于PHP Echo Mysql 数据来自 2 个表 BY 最新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36657106/

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