gpt4 book ai didi

mysql - 需要在没有 UNION 的情况下获得期望的结果

转载 作者:行者123 更新时间:2023-11-29 00:35:48 27 4
gpt4 key购买 nike

我有一张 table ,

id  | OpenDate             |  CloseDate
------------------------------------------------
1 | 2013-01-16 07:30:48 | 2013-01-16 10:49:48
2 | 2013-01-16 08:30:00 | NULL

我需要得到如下的综合结果

 id | date                 |   type
---------------------------------
1 | 2013-01-16 07:30:48 | Open
1 | 2013-01-16 10:49:48 | Close
2 | 2013-01-16 08:30:00 | Open

使用UNION我们可以做到这一点,但是不使用UNION如何得到想要的结果呢?

最佳答案

据我所知,如果不使用联合,就不可能获得您建议的 MySQL 结果集。

这个问题读起来更像是一个谜题(作业),而不是真正的编程问题 - 为什么 UNION 不可用?为什么要直接从 PHPMyAdmin 或 mysql 命令行客户端等通用工具访问数据?一旦您在顶层获得了一层代码来实现诸如表示和访问控制之类的东西,那么不使用 UNION 就很简单了 - 但使用 UNION 语句可能会简单得多:你为什么要问?

更新对于不使用 UNION 的问题,我有一个解决方案 - 但这很明显这是一个家庭作业/面试问题。

更新2由于 LearneR 发布(然后删除)了另一个问题暗示他对 UNION 查询的性能不满意,所以这不太可能是家庭作业/面试问题。但只是为了娱乐值(value),我会推迟发布我的解决方案,直到稍后看看是否有其他人可以解决这个难题(提示:我的解决方案根本不应该提高查询的性能——这只是一个试图获得的学术练习无需使用 UNION 即可获得所需的结果)。

更新 3

没人知道吗?

SELECT t.id
, IF(rowmultiplier.id=1, t.opendate, t.closedate) AS `date`
, IF(rowmultiplier.id=1, 'Open', 'Close') AS `type`
FROM yourtable t
, (SELECT id
FROM yourtable AS tablealias
WHERE id IN (1,2) ) AS rowmultiplier
WHERE rowmultiplier.id=1
OR t.closedate IS NOT NULL;

(有一些调整范围,在没有任何排序/过滤的情况下,然后强制对外部查询进行全表扫描,并对内部查询进行索引查找可以使其比联合查询快很多) .

关于mysql - 需要在没有 UNION 的情况下获得期望的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358420/

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