- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含多个名称的表,我希望在搜索第二个表上的等价物之前从这些名称中删除一些后缀。
为了做到这一点,我决定将我希望修改的列存储在一个变量中,并修改该变量以便在我的第二个表中进行比较。
修改前查询:
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 个结果。是什么导致了这种结果差异?
最佳答案
一般情况下,SELECT
子句中的字段在WHERE
中的条件之后得到很好的处理;变量中使用的值很可能是查询执行之前碰巧的值。
我是用户/ session 变量的忠实拥护者,但跨子句使用它们非常不可靠,这也是它们声名狼藉的最大原因。
--- 你能做什么---
我不是相关子查询的忠实拥护者;他们有他们的目的,当他们真正需要的时候,很少有其他东西可以很优雅,但根据我的经验,他们很少需要。你最好有这样的东西......
SELECT DISTINCT T1.id, T1.name
FROM (SELECT id, name, X AS trimmedName FROM Table1 ) AS T1
INNER JOIN Table2 AS T2
ON T1.id = T2.id
AND T2.textBlock LIKE concat('%', T1.trimmedName, '%')
;
带有前导通配符的 LIKE
仍然会给您带来性能障碍;但希望 id
相等条件将否定该问题。
--- 交替 ---我用得不多,但我看到人们使用 EXISTS
报告了很好的结果。像这样的……
SELECT T1.id, T1.name
FROM Table1 T1
WHERE EXISTS (
SELECT *
FROM Table2 T2
WHERE T2.id = t1.id AND T2.textBlock like concat('%', T1.name, '%')
)
关于mysql - 使用 MySql 用户变量的分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35490614/
我有两个包含 40000 个样本的数据集。我想用 python 计算这两个数据集之间的 Kullback-Leibler 散度。在 python 中有什么有效的方法吗? 最佳答案 编辑: 好的。我发现
我正在尝试编译一个 .c 文件,用于处理 mMIPS 指令集中硬件中的裁剪,但是我似乎在“results=sfu1”行处收到错误“宏参数数量不一致” ' 当我尝试使用 lcc -o mips_mem.
这个正则表达式 /{(\w+)}/g 应该匹配大括号 {} 之间 的每个单词字符。相反,我在 Regex101 JavaScript engine 中得到了不同的结果和 Chrome 控制台。 Reg
我是一名优秀的程序员,十分优秀!