gpt4 book ai didi

MySQL 查询 > 选择 future 的行并检查特定列是否已填充并匹配变量 > 否则如果匹配变量则采用其他列

转载 作者:行者123 更新时间:2023-11-29 00:08:03 26 4
gpt4 key购买 nike

如何查询这个结构:

// table
column1 | column2 | datetime_column

我想选择不在过去的每一行(及其所有列),其中 column1 不为 null + 其内容与 $value 匹配。仅当 column1 为 null 时检查 column2 内容是否与 $value 匹配,否则不选择行。

这是我得到的:

SELECT * FROM table WHERE datetime_column > NOW() AND ( column1 = "$value" OR column2 = "$value" )

当然,这会获取 column1 或 column2 与 $value 匹配的所有行。可以使用提示如何在条件下使用 SQL。

示例(假定 column1-2 可为空)

// dynamic variable
$value = 'foo';

column1 | column2 | datetime_column

row1 = foo | bar | 2013-12-01 10:00:00
row2 = NULL | foo | 2013-12-02 11:00:00
row3 = baz | foo | 2013-12-03 12:00:00
row4 = foo | bar | 2014-12-01 10:00:00
row5 = NULL | foo | 2014-12-02 11:00:00
row6 = baz | foo | 2014-12-03 12:00:00

获取的行应该是

row4 + row5

最佳答案

您应该查看 CASE。

SELECT 
*,
CASE
WHEN column1 = "$value" THEN column1
WHEN column2 = "$value" THEN column2
END AS value
FROM table
WHERE datetime_column > NOW()
AND ( column1 = "$value" OR column2 = "$value" )

如果您只需要值,请忽略星号。

关于MySQL 查询 > 选择 future 的行并检查特定列是否已填充并匹配变量 > 否则如果匹配变量则采用其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612664/

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