从没有按日期排序的公共列的两个表中打印结果

Posted

技术标签:

【中文标题】从没有按日期排序的公共列的两个表中打印结果【英文标题】:Print results from two tables with no common columns ordered by date 【发布时间】:2014-12-12 13:31:53 【问题描述】:

这是我上次尝试的。

    (
SELECT  
`offers`.`id` AS `offer`, `offers`.`date` 
from `offers`
WHERE `offers`.`expired`='0'
ORDER BY `offers`.`date` DESC LIMIT 10
)
UNION ALL
(
SELECT  
`vlog`.`video`,
`vlog`.`updated`
from `vlog`
ORDER BY `vlog`.`date` DESC LIMIT 10
)

为简单起见,我只有两列。我需要按日期对它们进行排序(与上面的代码提供的结果不同)并显示哪个是报价,哪个是视频。如果没有链接表的列,这可能吗?

【问题讨论】:

【参考方案1】:

我假设 video.video 是一个 ID,因为它与顶部查询中的 id 列对齐。您可以在两个查询中选择一个文字字符串来指示它来自哪个查询:

SQL Fiddle

SELECT
    'offer' AS type,
    id,
    date
FROM
    offers
WHERE
    expired = 0
UNION
SELECT
    'video' AS type,
    video AS id,
    updated AS date
FROM
    vlog
ORDER BY
    date

【讨论】:

谢谢,“类型”是知道哪个是哪个的完美方式。但是,工会仍在打印所有视频,然后是所有优惠。 等等,完美!一起谢谢大家。我会接受你的回答。如果我还有其他事情要做,请给我留言。再次感谢。

以上是关于从没有按日期排序的公共列的两个表中打印结果的主要内容,如果未能解决你的问题,请参考以下文章

如何根据php中日期列的降序对mysql结果数组进行排序?

数据库:如何从具有一个公共列的两个表中获取多个值

Oracle:将两个表与一个公共列加上第二个表中的一个附加列(最新生效日期)连接以选择其他列

从两个表中选择公共列

合并两个没有公共字段的表

JZ3.从尾到头打印链表;JZ14.链表中倒数第K个节点;JZ15.反转链表;JZ16.合并两个有序链表;JZ36.两个链表的第一个公共节点;JZ55.链表中环的入口节点;JZ56.删除链表中重复节点