gpt4 book ai didi

mysql - SQL 在 SELECT 表中输入与实际表数据不同的数据,基于 if 语句

转载 作者:行者123 更新时间:2023-11-29 06:33:23 26 4
gpt4 key购买 nike

我是 SQL 新手,但一直无法找到一种好方法来完成我在这里尝试做的事情。

目标:根据条件在列中输入与 SELECT 通常检索的数据不同的数据

在下面的示例中,我想要表 1 的 A 列中的所有数据,但我想将“C”的所有实例替换为“X”。

IE:
Table 1 Table 2
----------------------------
| A | B | | A | C |
-------------------------------
| y | 5 | | y | 17 |
-------------------------------
| z | 2 | | z | 8 |

所选数据:

--------------
| C |
------------
| X |
------------
| 8 |



SELECT
t.C

FROM Table1 t with(nolock)
INNER JOIN Table2 tp with (nolock)
ON tp.A = t.A

WHERE t.a in ('y', 'z')

(对于这个例子,WHERE 语句可能有点偏离,试图将我在工作中的代码翻译成非挽回性语言,而我只有 70% 明白我在做什么)

主要思想是我选择了“C”列中的数据,但将数据“17”的实例替换为值“X”。编写的代码不会进行此替换,只是想要我现在拥有的结构。请注意,这只会更改选择表中的数据,但不会更新服务器上的表 2 数据。

如有任何帮助,我们将不胜感激,谢谢!

====================================

感谢 Barmar 使用的解决方案

SELECT
t.A,
CASE WHEN (t.C = 17), THEN 'X' else t.C END [Title of Column]

声明的其余部分是相同的。请注意,这不适用于上面的示例,因为 C 列数据是数字,我想用“X”字符替换它。您可以将其替换为相同的数据类型,或者在 ELSE 语句中默认将该列替换为“其他一些字符串值”,这样就可以了。

最佳答案

使用IFCASE

SELECT IF(t2.C = 17, 'X', t2.c) AS C
FROM Table1 AS t1
JOIN Table2 AS t2 ON t1.A = t2.A
WHERE t1.A IN ('y', 'z')

SELECT CASE t2.C
WHEN 17 THEN 'X'
ELSE t2.C
END AS C
FROM Table1 AS t1
JOIN Table2 AS t2 ON t1.A = t2.A
WHERE t1.A IN ('y', 'z')

关于mysql - SQL 在 SELECT 表中输入与实际表数据不同的数据,基于 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55154191/

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