我有两个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加入它们,我会得到一个结果集。
答案 0 :(得分:0)
对于您的第二个问题,请尝试将其作为JOIN而不是使用IN: -
UPDATE a
INNER JOIN b
ON a.col = b.col
WHERE ........
SET a.id=x