gpt4 book ai didi

mysql - WHERE 子句中具有替换功能的子查询无法识别

转载 作者:行者123 更新时间:2023-11-29 15:27:22 25 4
gpt4 key购买 nike

问题是我想将使用子查询的 SELECT 结果放入 A_table A_LIST 列中where 子句,以便它们可以匹配 A_TABLE 'A_List' 和 B_TABLE 'userList'

A_TABLE

+-------+----------+
| A_LOG | A_List |
+-------+----------+
| WQ-83 | a |
| WQ-82 | b |
| WQ-89 | c |
| WQ-85 | d |
| WQ-86 | e |
| WQ-81 | f |
+-------+----------+

B_TABLE

+----------+--------------------+
| userName | userList |
+----------+--------------------+
| A_PERSON | ['a','b','c','d'] |
| B_PERSON | NULL |
+----------+--------------------+

b.table 数据看起来像 ['a','b','c','d'](column name -> userList] 在一列中,所以我使用替换来解析上下文

SELECT replace(replace(userList,'[',''),']','') from Btable

结果看起来像 --> 'a','b','c','d' 并将此选择查询放入子查询中A.table列表列数据每列看起来像a,b,c

SELECT A_List  from A_TABLE where A_List IN(
SELECT replace(replace(userList,'[',''),']','') from B_TABLE
)

但是这个查询结果返回0条数据

所以我尝试

SELECT  A_List  from A_TABLE where A_List IN( 'a','b','c','d');

它返回 4 行 -> 这是正确的数据

+-------+----------+
| A_LOG | A_List |
+-------+----------+
| WQ-83 | a |
| WQ-82 | b |
| WQ-89 | c |
| WQ-85 | d |
+-------+----------+

我不知道为什么这个查询失败
实现这一目标的最佳方法是什么?

最佳答案

您当前的用户列表数据几乎看起来像一个有效的JSON数组,只不过值应该用双引号引起来,而不是单引号。假设您的数据如下所示:

["a","b","c","d"]

然后我们使用以下查询:

SELECT a.A_LOG, a.A_List
FROM A_TABLE a
WHERE EXISTS (SELECT 1 FROM B_TABLE b
WHERE JSON_SEARCH(b.userList, 'one', a.A_List) IS NOT NULL);

screen capture from demo below

Demo

关于mysql - WHERE 子句中具有替换功能的子查询无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58986496/

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