gpt4 book ai didi

mysql - 从两个表中选择单独的行,按日期排序

转载 作者:IT老高 更新时间:2023-10-28 23:53:48 26 4
gpt4 key购买 nike

不想在这里进行任何类型的JOIN。我正在使用 PHP 构建两个表的 RSS 提要,我想从两个表中选择所有行,保持行分开,但按公共(public) created 列排序。

例如,如果我有一个表foo:

id      downloads   views   created
-----------------------------------------------
1 12 23 2011-07-22 00:10:16
2 51 900 2011-07-22 10:11:45
3 8 80 2011-07-23 04:12:18

还有一个表bar:

id      title       body    created
-----------------------------------------------
1 foo ogblog 2011-07-21 10:54:07
3 bar zip 2011-07-24 10:54:07
4 zip bar 2011-07-25 10:54:07

我想从两个按公共(public) created 列排序的表中选择所有数据,因此示例结果集将是 (ignoring bar.id 因为它不是需要):

id      title       body        downloads   views   created             | table
-------------------------------------------------------------------------------
NULL bar zip NULL NULL 2011-07-24 10:54:07 | bar
NULL foo ogblog NULL NULL 2011-07-21 10:54:07 | bar
1 NULL NULL 12 23 2011-07-22 00:10:16 | foo
2 NULL NULL 51 900 2011-07-22 10:11:45 | foo
3 NULL NULL 8 80 2011-07-23 04:12:18 | foo
NULL zip bar NULL NULL 2011-07-25 10:54:07 | bar

不需要 table 列;我添加它是为了让事情更容易理解。

希望我想做什么很明显;而不是执行 JOIN 从两个表中的列生成行,我想获取所有行数据具有共同的列布局,其中表中不存在的任何列都有 NULL 放进去。

如果您需要澄清,请告诉我。

最佳答案

使用虚拟列来说明不同的结构,使用联合来连接它们,并使用父选择来处理排序:

SELECT * FROM (
(SELECT foo.id, NULL AS title, NULL AS body, foo.downloads, foo.views, foo.created FROM foo)
UNION ALL
(SELECT NULL AS id, bar.title, bar.body, NULL AS downloads, NULL AS views, bar.created FROM bar)
) results
ORDER BY created ASC

关于mysql - 从两个表中选择单独的行,按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790479/

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