gpt4 book ai didi

mysql - 选择具有非空值列的记录

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:42 27 4
gpt4 key购买 nike

我陷入了这个问题。如果我有这样一张 table :

----------------------------------------
ID | field1 | field2 | field3| field4 |
----------------------------------------
1 | 1 | 0 | 1 | 0 |
----------------------------------------
2 | 0 | 1 | 0 | 1 |
----------------------------------------

我想编写一个查询来选择一条只有列等于 1 的记录,例如1. 其中 ID = 1

 ---------------------
ID | field1 | field3
----------------------
1 | 1 | 1

2。其中 ID = 2

 ---------------------
ID | field2 | field4
----------------------
2 | 1 | 1

你们能给我建议或建议吗,如何制作?

非常感谢您花时间阅读我的问题。

最佳答案

不,SQL 不会那样做,它会在运行时有条件地返回列。

要返回的列集是在解析和准备 SQL 语句时确定的。它不能在运行时动态更改。

要获得如图所示的结果,我们需要两个不同的查询

SELECT t.id, t.field1, t.field3
FROM mytable t
WHERE ...

SELECT t.id, t.field2, t.field4
FROM mytable t
WHERE ...

我们可以为 SELECT 列表中的表达式提供别名,但同样,这些别名必须在 SQL 文本中指定;这些在执行时无法更改。

 SELECT t.id, 1 AS field2, 1 AS field4 
FROM mytable t
WHERE ...

但是我们仍然需要不同的 SQL 文本来返回 field1 和 field3。


似乎可以填充字段 1..4 的 2^4 (1+4+6+4+1) 种可能组合。总共 16 个可能的 SELECT 列表。

我们可以运行预查询,找出应该返回哪个字段 N,并使用该查询的结果来制定第二个查询的文本。

但这样做所需的冗长乏味似乎没有必要。

关于mysql - 选择具有非空值列的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50146920/

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