gpt4 book ai didi

sql - 为特定列设置WHERE子句的默认值

转载 作者:行者123 更新时间:2023-12-03 19:13:50 25 4
gpt4 key购买 nike

假设我创建了一个像这样的表:

CREATE TABLE stuff(
a1 TEXT,
a2 TEXT,
. . .
an TEXT,
data TEXT
);


我需要像这样进行 SELECT查询:

SELECT data FROM stuff WHERE
a1="..." and a2="..." and . . . and an="..."


选择一个特定的数据值,并指定所有 a值。

许多 a具有一些我认为默认值的值。

有没有一种方法可以向表或查询中添加某种类型的语句,这些语句将对 a使用一些默认值,而这些默认值未明确限制在 where子句中?例如,如果我不在 a1="b"之后写 where,我只会得到 a1等于 "b"的行,而不是任何值,但是如果我写 a1="c",我会得到那些。

所有 a的默认值都相同。

对我而言,最好的解决方案是将默认值烘烤到表或数据库文件中。

最佳答案

有没有一种方法可以向表或查询中添加某种语句
将使用一些默认值,因为默认值未明确
约束在where子句中?


简短答案:不可以。

根据您在这里说的话:


举例来说,如果我不在后面写a1 =“ b”


我认为您可能经常运行此查询,甚至可能是手动运行,并且您希望传递一些不同的值。如果确实如此,则可以传入参数并使用一些变量来处理。

您可以做的是在该CASE中有一个WHERE语句来提供帮助。考虑以下:

SELECT *
FROM
table
WHERE
CASE
WHEN %s IS NOT NULL
THEN a1 = %s
ELSE a1 = 'b'
END
[AND/OR] <other constraints here>


现在,实际执行此操作的语法将根据实际用于执行查询的内容而有所不同。它们是从python程序运行的吗? .net中的某些内容?等

另外,您不必严格遵守我在此处使用的 IS NOT NULL,可以使用其他值来执行其他操作。由你决定。

编辑:

就肖恩在评论中的观点而言,如果传入的参数 %sNOT NULL或合法值,那么 ifnull()可以替代此case语句。下面的例子:

WHERE
a1 = ifnull(%s, 'b')

关于sql - 为特定列设置WHERE子句的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726650/

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