在MYSQL中,是否可以从两个表中获取记录,其中两个表都有逗号分隔的值?

在MYSQL中,是否可以从两个表中获取记录,其中两个表都有逗号分隔的值?,mysql,Mysql,我在从两个表中查找记录时遇到问题,这两个表都有公共名称字段,并且两个字段都有逗号分隔的值 比如说, 表1具有“a、b、c”值 id | name ---------- 1 | a,b,c id | name --------------- 1 | a,c,d,e,f 和表2具有的“a、c、d、e、f”值 id | name ---------- 1 | a,b,c id | name --------------- 1 | a,c,d,e,f 现在我想比较两个表中至少有一个字符匹

我在从两个表中查找记录时遇到问题,这两个表都有公共名称字段,并且两个字段都有逗号分隔的值

比如说,

表1
具有
“a、b、c”

id | name
----------
1  | a,b,c
id | name
---------------
1  | a,c,d,e,f
表2
具有
的“a、c、d、e、f”

id | name
----------
1  | a,b,c
id | name
---------------
1  | a,c,d,e,f
现在我想比较两个表中至少有一个字符匹配的两个表。 那么,是否有可能获取至少一个字符与两个字段匹配的记录呢


提前感谢:)

首先,使用UNION语句合并两个表中的行;仅包括需要比较的列。返回的结果集用于比较。将表1视为t1,表2视为t2

SELECT t1.pk, t1.c1
FROM t1
UNION ALL
SELECT t2.pk, t2.c1
FROM t2
其次,根据需要比较的主键和列对记录进行分组。如果需要比较的列中的值相同,则COUNT()返回2,否则COUNT()返回1

请参见以下查询:

SELECT pk, c1
FROM
 (
   SELECT t1.pk, t1.c1
   FROM t1
   UNION ALL
   SELECT t2.pk, t2.c1
   FROM t2
)  t
GROUP BY pk, c1
HAVING COUNT(*) = 1
ORDER BY pk
MySQL比较两个表的示例

SELECT id,title
FROM (
SELECT id, title FROM t1
UNION ALL
SELECT id,title FROM t2
) tbl
GROUP BY id, title
HAVING count(*) = 1
ORDER BY id;

它将返回不匹配的记录

首先,使用UNION语句合并两个表中的行;仅包括需要比较的列。返回的结果集用于比较。将表1视为t1,表2视为t2

SELECT t1.pk, t1.c1
FROM t1
UNION ALL
SELECT t2.pk, t2.c1
FROM t2
其次,根据需要比较的主键和列对记录进行分组。如果需要比较的列中的值相同,则COUNT()返回2,否则COUNT()返回1

请参见以下查询:

SELECT pk, c1
FROM
 (
   SELECT t1.pk, t1.c1
   FROM t1
   UNION ALL
   SELECT t2.pk, t2.c1
   FROM t2
)  t
GROUP BY pk, c1
HAVING COUNT(*) = 1
ORDER BY pk
MySQL比较两个表的示例

SELECT id,title
FROM (
SELECT id, title FROM t1
UNION ALL
SELECT id,title FROM t2
) tbl
GROUP BY id, title
HAVING count(*) = 1
ORDER BY id;

它将返回不匹配的记录

嗯,这是了解规范化的一种方法。@Mihai…或NoSQLShort-response。没有。因为问题的前提是有缺陷的。好吧,这是学习规范化的一种方法。@Mihai…或NoSQLShort-response。没有。因为问题的前提是有缺陷的。很抱歉迟了回复,感谢您尝试解决我的问题,但是对于您的信息,此SQL不会返回我在这里需要的内容。我在实际数据上尝试了这一点&从两个表中都找到了两行不同的数据。请参阅此屏幕截图以供参考:根据我的要求,我只需要对逗号分隔的一个字段比较两个表&如果在比较两个字段后,任何一个值匹配,则应返回true或false。字段中的值顺序可能不同。我希望有人会有解决方案,以获得我所期望的。很抱歉,迟来的答复,并感谢您尝试解决我的问题,但为您提供的信息,此SQL将不会返回我在这里需要的。我在实际数据上尝试了这一点&从两个表中都找到了两行不同的数据。请参阅此屏幕截图以供参考:根据我的要求,我只需要对逗号分隔的一个字段比较两个表&如果在比较两个字段后,任何一个值匹配,则应返回true或false。字段中的值顺序可能不同。我希望有人会有解决办法,以得到我所期望的。