gpt4 book ai didi

mysql - 如何编写SQL从另一列中获取一列的数据

转载 作者:行者123 更新时间:2023-11-29 16:06:02 24 4
gpt4 key购买 nike

我有 2 个表 tblA 和 tblB。现在我想通过 op_code 获取名称。

tblA
op_code | date | num
------------------------------------------------
a | 03/01 | 34
b | 04/03 | 5556
c | 03/05 | 555

tblB
id | op_code | Name
------------------------------------------------
1 | a | Jet
2 | b,c | Mike
3 | d | Tom

由于tblB中的op_code数据是组合数据,所以我尝试编写如下sql。

   select a.*, b.* 
from tblA a
LEFT JOIN tblB b on a.op_code in (SUBSTRING_INDEX(b.op_code, ',', 13))

这不起作用。有什么建议吗?

最佳答案

您可以在此处使用FIND_IN_SET():

SELECT a.*, b.*
FROM tblA a
LEFT JOIN tblB b
ON FIND_IN_SET(a.op_code, b.op_code) > 0;

但是,由于在 SQL 表中存储 CSV 数据被视为不好的做法,因为它是非标准化数据,因此您应该仅将其视为临时解决方法查询。更好的计划是 promise B 表中的每个 op_code 关系只有一条记录。

只是为了好玩,这是使用 REGEXP 编写查询的另一种方法:

SELECT a.*, b.*
FROM tblA a
LEFT JOIN tblB b
ON b.op_code REGEXP CONCAT('[[:<:]]', a.op_code, '[[:>:]]');

enter image description here

这是查询第二个版本的演示:

Demo

关于mysql - 如何编写SQL从另一列中获取一列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55740565/

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