我有一个名称为几个的表,我希望在搜索第二个表上的等同项之前从这些名称中删除一些后缀。使用MySql用户变量的差异
为了做到这一点,我决定将我希望修改的列存储在一个变量中,并在我的第二个表中修改所述变量进行比较。修改之前
查询:
SELECT T1.id, T1.name
FROM Table1 T1
WHERE T1.id IN (
SELECT T2.id
FROM Table2 T2
WHERE T2.textBlock like concat('%', T1.name, '%')
)
与用户变量新建查询(用于测试,在@newname所有的操作被拆除)
SELECT *, @newName:=T1.name
FROM Table1 T1
WHERE T1.id IN (
SELECT T2.id
FROM Table2 T2
WHERE T2.textBlock like concat('%', @newName, '%')
)
第一个查询返回590个结果。即使没有对变量进行修改,第二个查询也会返回225个结果。什么可能导致结果的差异?
两个查询都不应该工作,因为'%'应该导致解析错误。相关的子查询是正确的方法;没有理由认为一个变量在这种情况下会起作用。 –