gpt4 book ai didi

mysql - 在mysql中用if语句覆盖列结果

转载 作者:行者123 更新时间:2023-11-29 03:02:23 25 4
gpt4 key购买 nike

我想我只是懒惰,但如果我运行 sql 查询:

   SELECT *, IF(enddate='0000-00-00',null,enddate) as enddate from
employees where (enddate is null || enddate > now())
order by name asc

显然我最终得到了两个 enddate 列。

我只是想知道是否有办法用新的覆盖 * 选择的 endate 列,或者我是否必须替换 * 与各个列?

最佳答案

不,没有办法避免返回两列。但是 - 如果您使用的是使用关联字段返回的 mysql 驱动程序行提取(例如,PHP 的 mysqli_result::fetch_assoc ),您可以使用技巧:

   SELECT 
IF(enddate='0000-00-00',null,enddate) as enddate,
employees.*
from
employees
where
(enddate is null || enddate > now())
order by name asc

- 不要忘记限定完整的表名(即 employees.*,而不仅仅是 *)。可以找到 sample here .

然后第一个字段将是您的表达式而不是原始字段。事实上,这就是您将在链接的 SQLFiddle 示例中看到的内容,即它使用关联字段获取,因此,一个字段覆盖另一个字段,但这并不意味着在原始数据集中会有一列(因此在常见情况下你不能依赖它 - 检查你是否可以,显然,使用 mysql 客户端)

在通常情况下:只有完全限定的字段序列才能完成这些工作(所以 - 是的,不能使用 *)

关于mysql - 在mysql中用if语句覆盖列结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21170387/

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