where FIND_IN_SET(TC.storeId,'4,24,56') or FIND_IN_SET(TC.storeId,TC.poolStoreId)
与
where FIND_IN_SET(TC.storeId,CONTACT('4,24,56',TC.poolStoreId))
请问他们之间的区别是什么?由哪个函数导致的?
...全文
6413打赏收藏
请教两个where条件的区别
where FIND_IN_SET(TC.storeId,'4,24,56') or FIND_IN_SET(TC.storeId,TC.poolStoreId) 与 where FIND_IN_SET(TC.storeId,CONTACT('4,24,56',TC.poolStoreId)) 请问他们之间的区别是什么?由哪个函数导致的?
[Quote=引用 11 楼 acmain_chm 的回复:]
你的两个语句 #7楼 #8楼 的语义都不同,这样谈不上效率。不一样的东西,没什么可比的。
[/Quote]
顶楼的是笔误,少了个逗号,没少括号啊,后面的条件并不影响问题的主题。
select * from T_CUSTOMER TC
where
(
FIND_IN_SET(TC.storeId,'4,5,24,')
or
FIND_IN_SET(TC.storeId,TC.poolStoreId)
)
and registDate>='2010-12-01'
and registDate<='2010-12-31'
与
select * from T_CUSTOMER TC
where
FIND_IN_SET(TC.storeId,'4,24,56') or FIND_IN_SET(TC.storeId,TC.poolStoreId)
and registDate>='2010-12-01'
and registDate<='2010-12-31'
有区别吗?效率一问是针对5楼的。谢谢解惑!
[Quote=引用 9 楼 acmain_chm 的回复:]
select * from T_CUSTOMER TC
where
FIND_IN_SET(TC.storeId,'4,5,24,')
or FIND_IN_SET(TC.storeId,TC.poolStoreId)
and registDate>='2010-12-01'
and registDate<='2010-12-31'
你的这句和顶楼的主义不同!
……
[/Quote]
不是的,我找到原因了,是TC.poolStoreId为null的那些记录娶不到,晕死啊。
select
*
from
T_CUSTOMER TC
where
FIND_IN_SET(TC.storeId,concat('4,5,24,',ifnull(TC.poolStoreId,'')))
and registDate>='2010-12-01'
and registDate<='2010-12-31'
select * from T_CUSTOMER TC
where
FIND_IN_SET(TC.storeId,'4,5,24,')
or FIND_IN_SET(TC.storeId,TC.poolStoreId)
and registDate>='2010-12-01'
and registDate<='2010-12-31'
你的这句和顶楼的主义不同!
少了一个括号。
体会一下这个语句加上括号后的不同。
select * from T_CUSTOMER TC
where
(
FIND_IN_SET(TC.storeId,'4,5,24,')
or
FIND_IN_SET(TC.storeId,TC.poolStoreId)
)
and registDate>='2010-12-01'
and registDate<='2010-12-31'
select * from T_CUSTOMER TC
where
FIND_IN_SET(TC.storeId,'4,5,24,')
or FIND_IN_SET(TC.storeId,TC.poolStoreId)
and registDate>='2010-12-01'
and registDate<='2010-12-31'