Mysql VARCHAR上的内部联接
以下查询返回0行,即使这两个表包含多个匹配值Mysql VARCHAR上的内部联接,mysql,sql,join,varchar,Mysql,Sql,Join,Varchar,以下查询返回0行,即使这两个表包含多个匹配值 SELECT i.isrc, m.isrc FROM table1 i INNER JOIN table2 m ON i.isrc = m.isrc; 由于isrc列是varchar类型,我怀疑这可能是表排序规则的问题。但是,将这两个排序规则更改为utf-8并没有解决问题 这里可能有什么问题?试试下面的方法 SELECT i.isrc, m.isrc FROM table1 i INNER JOIN table2 m ON UPPER(TRIM
SELECT i.isrc, m.isrc FROM table1 i INNER JOIN table2 m ON i.isrc = m.isrc;
由于isrc列是varchar类型,我怀疑这可能是表排序规则的问题。但是,将这两个排序规则更改为utf-8并没有解决问题
这里可能有什么问题?试试下面的方法
SELECT i.isrc, m.isrc
FROM table1 i
INNER JOIN table2 m
ON UPPER(TRIM(i.isrc)) = UPPER(TRIM(m.isrc))
注意:
SELECT i.isrc, m.isrc
FROM table1 i
INNER JOIN table2 m
ON UPPER(TRIM(i.isrc)) = UPPER(TRIM(m.isrc))
注意:
SELECT i.isrc, m.isrc
FROM table1 i
INNER JOIN table2 m
ON UPPER(TRIM(i.isrc)) = UPPER(TRIM(m.isrc))
注意:
SELECT i.isrc, m.isrc
FROM table1 i
INNER JOIN table2 m
ON UPPER(TRIM(i.isrc)) = UPPER(TRIM(m.isrc))
注意:
select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src;
在执行上述操作之前,您可能会发现一个摘要很有帮助:
select in1, in2, count(*), min(src), max(src)
from (select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src
) s
group by in1, in2;
对于分组依据
相同和比较相同的语义可能不相同(例如,末尾的空格将影响分组依据
的相似性,但不应影响相等的相似性)。但是,这将让您知道两个表中可能匹配的内容。查看您认为匹配每个表中的值的内容:
select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src;
在执行上述操作之前,您可能会发现一个摘要很有帮助:
select in1, in2, count(*), min(src), max(src)
from (select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src
) s
group by in1, in2;
对于分组依据
相同和比较相同的语义可能不相同(例如,末尾的空格将影响分组依据
的相似性,但不应影响相等的相似性)。但是,这将让您知道两个表中可能匹配的内容。查看您认为匹配每个表中的值的内容:
select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src;
在执行上述操作之前,您可能会发现一个摘要很有帮助:
select in1, in2, count(*), min(src), max(src)
from (select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src
) s
group by in1, in2;
对于分组依据
相同和比较相同的语义可能不相同(例如,末尾的空格将影响分组依据
的相似性,但不应影响相等的相似性)。但是,这将让您知道两个表中可能匹配的内容。查看您认为匹配每个表中的值的内容:
select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src;
在执行上述操作之前,您可能会发现一个摘要很有帮助:
select in1, in2, count(*), min(src), max(src)
from (select src, sum(in1) as in1, sum(in2) as in2
from ((select distinct i.isrc as src, 1 as in1, 0 as in2 from table1 i) union all
(select distinct m.isrc as src, 0 as in1, 1 as in2 from table1 m)
) t
group by src
) s
group by in1, in2;
对于
分组依据
相同和比较相同的语义可能不相同(例如,末尾的空格将影响分组依据
的相似性,但不应影响相等的相似性)。但是,这将让您知道两个表之间可能匹配的内容。您确定值匹配吗?在varchar上连接时,空格和不可见字符很容易阻止匹配,当它们看起来应该匹配时。尝试修剪和上/下大小写这两个值。您可以创建一个复制问题的值吗?UTF-8是一种编码,而不是排序规则。编码不应该影响匹配。排序规则位是\u ci
,\u cs
。。。后缀。您确定值匹配吗?当在varchar上加入时,空格和不可见字符很容易阻止匹配,当它们看起来应该匹配时。尝试修剪和上/下大小写这两个值。您能创建一个复制问题的值吗?UTF-8是一种编码,而不是排序规则。编码不应该影响匹配。排序规则位是\u ci
,\u cs
。。。后缀。您确定值匹配吗?当在varchar上加入时,空格和不可见字符很容易阻止匹配,当它们看起来应该匹配时。尝试修剪和上/下大小写这两个值。您能创建一个复制问题的值吗?UTF-8是一种编码,而不是排序规则。编码不应该影响匹配。排序规则位是\u ci
,\u cs
。。。后缀。您确定值匹配吗?当在varchar上加入时,空格和不可见字符很容易阻止匹配,当它们看起来应该匹配时。尝试修剪和上/下大小写这两个值。您能创建一个复制问题的值吗?UTF-8是一种编码,而不是排序规则。编码不应该影响匹配。排序规则位是\u ci
,\u cs
。。。后缀。核心反“愚蠢错误”代码。我喜欢它;)核心反“愚蠢错误”代码。我喜欢它;)核心反“愚蠢错误”代码。我喜欢它;)核心反“愚蠢错误”代码。我喜欢它;)谢谢你,戈登。这确认未检测到相同的值。我还不清楚为什么。我尝试修剪()和上限()值。在我看来,它们是完全相同的、独立的SELECT语句,在两个表中具有匹配的值,返回相应的行。谢谢你,Gordon。这确认未检测到相同的值。我还不清楚为什么。我尝试修剪()和上限()值。在我看来,它们是完全相同的、独立的SELECT语句,在两个表中具有匹配的值,返回相应的行。谢谢你,Gordon。这确认未检测到相同的值。我还不清楚为什么。我尝试修剪()和上限()值。在我看来,它们是完全相同的、独立的SELECT语句,在两个表中具有匹配的值,返回相应的行。谢谢你,Gordon。这确认未检测到相同的值。我还不清楚为什么。我尝试修剪()和上限()值。在我看来,这两个表中的SELECT语句是相同的、独立的、具有匹配值的语句,返回相应的行。