SELECT `id`, `name` FROM `item` , (SELECT @T := `content` FROM `publish` WHERE `cid` = 1) tA WHERE @T LIKE CONCAT('%', `id`, '%');注意,本查询无法使用 id 列 索引!!
SELECT tA.`id`, tA.`name` FROM `item` tA , `publish` tB WHERE FIND_IN_SET(tA.`Id` , tB.`content`) > 0 AND tB.`cid` = 1; 注意, 本查询无法使用 id 列 索引!! 本查询效率严重低于上一查询!!!第一个查询特性可能会因为 MySQL 的版本更新而消失,< 只是可能!:-) > 第二个查询会有更好的版本兼容性。
是要
还是要
id name
3 good
1 hello因为item表中id为1的name的值为“helle”,不小心写成boy了
a.id,a.name
from
item a,publish b
where
','+a.id+',' like '%,'+b.content+',%'
and
b.cid=1
1.如果第一位是数字的字符串被用于一个算术运算中,那么它被转为这个数字的值。
例如:上面结果集:'2,4'被转为数字2,后面的都丢了。
2.如果一个包含字符和数字混合的字符串不能被正确地转换为数字,那么它被转换成0.
FROM `item`
, (SELECT @T := `content` FROM `publish` WHERE `cid` = 1) tA
WHERE @T LIKE CONCAT('%', `id`, '%');注意,本查询无法使用 id 列 索引!!
, `publish` tB
WHERE FIND_IN_SET(tA.`Id` , tB.`content`) > 0
AND tB.`cid` = 1;
注意,
本查询无法使用 id 列 索引!!
本查询效率严重低于上一查询!!!第一个查询特性可能会因为 MySQL 的版本更新而消失,< 只是可能!:-) >
第二个查询会有更好的版本兼容性。