gpt4 book ai didi

Select 查询中的 MySQL Concat/Trim 以检查另一个表中是否存在 - 我的代码有什么问题?

转载 作者:行者123 更新时间:2023-11-29 05:59:12 26 4
gpt4 key购买 nike

Table_Base

+----+----------------+
| ID | ACCOUNT |
+----+----------------+
| 1 | 100 |
| 2 | 120 |
| 3 | 193 |
| 4 | 201 |
| 5 | 213 |
| 6 | 247 |
| 7 | 304 |
+----+----------------+

Table_Transform

+----+----------------+
| ID | Account_Number |
+----+----------------+
| 1 | 100 |
| 2 | 9120 |
| 3 | 193 |
| 4 | 9201 |
| 5 | 9213 |
| 6 | 442 |
| 7 | 589 |
+----+----------------+

ACCOUNT 列中的所有条目前面都有多个空格,因此我使用了 TRIM() 函数。

我需要返回 Table_Base 中未出现在 Table_Transform 中的 Account_Number 中的所有帐户,同时考虑到某些帐户出现在 Table_Transform 中且前面有一个 9。因此,应该返回的ACCOUNTS是

    247
304

但是,对于我的代码,它忽略了 AND 子句并返回出现在 Table_Transform 中且前面有 9 的那些。我应该修复什么?

    SELECT * FROM Table_Base
WHERE ACCOUNT NOT IN
(SELECT Account_Number FROM Table_Transform)
AND CONCAT(9,TRIM(ACCOUNT)) NOT IN (SELECT Account_Number FROM Table_Transform);

我认为 CONCAT 查询有问题,因为我什至无法让它在一行 SELECT 语句中自行工作(它仍然会错误返回)。

最佳答案

试试这个

SELECT *
FROM Table_Base
WHERE TRIM(ACCOUNT) NOT IN
(SELECT Account_Number FROM Table_Transform)
AND CAST(CONCAT('9',TRIM(ACCOUNT)) AS UNSIGNED) NOT IN (SELECT Account_Number FROM Table_Transform);

--EDIT 添加了 CAST 以确保额外的安全--

直接等效。如果您有兴趣,我会使用 JOIN 语句

关于Select 查询中的 MySQL Concat/Trim 以检查另一个表中是否存在 - 我的代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46412014/

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