作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的完整代码:
<?php $sid = $_SESSION['userid'];
$stmt = $pdo->prepare("
SELECT tableA.*, tableB.*, tableC.*
FROM tableA
LEFT JOIN tableB
ON tableA.tableAuserid = tableB.tableAuserid
LEFT JOIN tableC
ON tableA.tableAuserid = tableC.tableCuserid
WHERE tableA.tableAuserid = ?
;
");
$stmt->bindParam(1, $sid, PDO::PARAM_INT);
$stmt->execute();
$columns = $stmt->fetchAll();
foreach($columns as $column):
$tableAdate = $column['tableAdate'];
$tableBdate = $column['tableBdate'];
$tableCdate = $column['tableCdate'];
if ($tableAdate): ?>
<div><?php echo $tableAdate; ?></div>
<?php endif;
if ($tableBdate): ?>
<div><?php echo $tableBdate; ?></div>
<?php endif;
if ($tableCdate): ?>
<div><?php echo $tableCdate; ?></div>
<?php endif;
endforeach; ?>
我的 3 个数据库表是:tableA
:
tableAid | tableAuserid | tableAdate
1 | 44 | 2018-07-13 11:09:11
2 | 44 | 2019-05-23 01:21:29
表B
:
tableBid | tableBuserid | tableBdate
1 | 44 | 2019-08-11 17:41:01
和表C
:
tableCid | tableCuserid | tableCdate
1 | 44 | 2014-03-14 09:18:16
这是当前从我的代码中回显的结果:
2018-07-13 11:09:11
2019-08-11 17:41:01
2014-03-14 09:18:16
2019-05-23 01:21:29
2019-08-11 17:41:01
2014-03-14 09:18:16
但这是我希望通过代码实现的结果:
2019-08-11 17:41:01 (tableB)
2019-05-23 01:21:29 (tableA)
2018-07-13 11:09:11 (tableA)
2014-03-14 09:18:16 (tableC)
基本上每条记录都必须检索没有重复值,结果必须由 $_SESSION['userid'] 变量确定,SQL 代码的 ORDER
排列必须按最新日期 所有 3 个表中合并的所有日期的 DESC
。我将如何做到这一点?
最佳答案
感觉我遗漏了问题的一些细微差别,但也许不是。有很多方法可以实现这一点。
以下UNION
允许相当大的灵 active ,即能够细化每个表的条件并仍然在 SQL 方面进行排序。
SELECT tId, tUserId, tDate FROM tableA WHERE tUserId = ?
UNION ALL
SELECT tId, tUserId, tDate FROM tableB WHERE tUserId = ?
UNION ALL
SELECT tId, tUserId, tDate FROM tableC WHERE tUserId = ?
ORDER BY tDate DESC;
老实说,我写的不多。也许在很大程度上是因为 ORM(需要研究的东西),或者因为谈话倾向于设计。您第一次使用 left join
是我编写的大约 95% 的查询的格式。不管怎样,没有理由不使用工会来满足某些报告需要。甚至可以创建一个 view
*喘息*。
关于mysql - 如何从多个表中按最新日期记录排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57699568/
我是一名优秀的程序员,十分优秀!