在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。字段中的值顺序可能不同。我希望有人会有解决办法,以得到我所期望的。