我基本上想要这个:if certain number is present >= 3 times then do some action ...
正如您在此处所看到的那样,38
列中存在absent_sids
次数> = 3次,因此我希望对他进行一些操作,例如禁令或其他内容。但我不知道应该写什么SQL查询,因为;
我是php / mysql的新手
2.该列有逗号分隔的数字,我很难通过mysql查询在此列中搜索并在给定的时间段/日期内带来absent_sid
> = 3次。
Plz帮助
答案 0 :(得分:2)
这很长但很有效。步骤:1)使用CHAR_LENGTH和REPLACE函数将数组转换为行。 2)使用GROUP BY和HAVING COUNT搜索存在3次或更多次的数字
在此处查看演示:http://sqlfiddle.com/#!9/39afc0/2
SELECT absent_sids
from (
SELECT
tablename.aid,
SUBSTRING_INDEX(
SUBSTRING_INDEX(
tablename.absent_sids, ',', numbers.n), ',', -1) as absent_sids
FROM
(select ORDINAL_POSITION as n
from INFORMATION_SCHEMA.COLUMNS
where table_name='COLUMNS'
and ORDINAL_POSITION <= (
select round(max(length(absent_sids))/2)
from tablename)) numbers
INNER JOIN tablename
ON CHAR_LENGTH(tablename.absent_sids)
-CHAR_LENGTH(REPLACE(tablename.absent_sids, ',', ''))
>= numbers.n-1) tab
GROUP BY absent_sids
HAVING COUNT(*) >= 3