gpt4 book ai didi

mysql - 如何在没有外键关系的情况下比较MySQL中同一数据库中的两个表

转载 作者:行者123 更新时间:2023-11-29 12:34:51 24 4
gpt4 key购买 nike

我有两个带有单词列表的表,在表1中我有两列,即。斯诺和言语; table2 有三列,即。 sno、wordlist1 和 wordlist2。两个表之间没有外键关系。

现在table1中的单词可以作为完整单词或子字符串出现在table2的wordlist1或wordlist2中。

表1

无话可说
1 彼得
2 拉维
3 假
4 阿尔伯特
5 汤姆
6米克
7 保罗
8 西蒙

表2

sno 单词列表1 单词列表2
1 亚当·富尔顿
2 阿杰·阿拉维
3 西蒙·哈桑
4 阿尔伯特·西德尔
5 汤米·哈里斯
6 彼得·库克

我想要一个表 1 中不以任何形式出现在表 2 中的单词列表。作为确切的单词或作为子字符串。

最佳答案

外键约束的存在不会改变查询。

一种选择是使用反连接模式:

SELECT t1.sno
, t1.words
FROM table1 t1
LEFT
JOIN table2 t2
ON t2.wordlist1 LIKE CONCAT('%',t1.words,'%')
OR t2.wordlist2 LIKE CONCAT('%',t1.words,'%')
WHERE t2.sno IS NULL

另一个选项是将 NOT EXISTS 谓词与相关子查询一起使用:

SELECT t1.sno
, t1.words
FROM table1 t1
WHERE NOT EXISTS
( SELECT 1
FROM table2 t2
WHERE t2.wordlist1 LIKE CONCAT('%',t1.words,'%')
OR t2.wordlist2 LIKE CONCAT('%',t1.words,'%')
)

关于mysql - 如何在没有外键关系的情况下比较MySQL中同一数据库中的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26943034/

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