内连接查询返回空集

时间:2014-05-15 11:30:26

标签: mysql join

我有两个varchar列具有公共值的表。 我试图在那些varchar列上的表上执行简单的内连接,但结果是空集 这些列中存在空值 两列的校对是相同的 我用Google搜索但无法找到解决方案 该查询是一个简单的连接查询,没有任何语法问题 当我更改内部连接到左连接时,我得到一个结果集,但右表中的所有列都是空的,即使行传递了连接条件。

我创建了两个带有公共varchar的虚拟表来运行连接查询,它可以工作。 因此,这不是一个错误。所以可能的原因是什么原因可以得到任何猜测 服务器是mysql版本5.5.37

update a set  a.id=x where a.col in(Select col from b where .....);

另一个问题是我有一个像上面这样的查询,但是当我运行它时有点挂起...在运行时     SHOW PROCESSLIST; 状态是发送数据...... 这是什么意思? 任何人都可以帮助我。

编辑1 查询就像这样

UPDATE table1 bo INNER JOIN table2 ae 
ON bo.joincol=ae.joincol AND ae.criteriaFieldName='UNSPSC' AND ae.taskId=4     AND ae.batchId = 44
SET  bo.taskid=ae.taskId WHERE bo.procesId = 44 AND (taskid IS NULL OR taskid = 0);

表1包含50多列 表2包含8列
不幸的是我无法透露数据。 有趣的是,如果我使用taskId加入它们,我会得到一个结果集。

1 个答案:

答案 0 :(得分:0)

对于您的第二个问题,请尝试将其作为JOIN而不是使用IN: -

UPDATE a 
INNER JOIN b
ON a.col = b.col
WHERE ........
SET  a.id=x