从数据库中检索结果

时间:2012-01-25 19:43:15

标签: php sql regex

这是我的表结构:

Table Call_Log

id | StationId | LoginId |  keystroke | timestamp

我需要能够找到关键字' 1'在关键' 5'之后被按下了在按键之间' Q'。

EX: 'Q','5','1','Q' will return true
but 'Q','5','2','Q' will return false

另外,我需要这样做,以便我可以向find列添加更多键,并且它也可以找到它们。因此,如果我想在' 3'之后找到关键5。和' 1',它可以做类似的事情。

Ex: 'Q','5','1','3','Q' will return true
but 'Q','5','1','2','Q' will return false

1 个答案:

答案 0 :(得分:1)

SELECT count(*) FROM (
  SELECT
    IF(
      @matchstring='Q' AND keystroke='5', 
      @matchsting:='Q5',
      IF(
        @matchstring='Q5' AND keystroke='1',
        @matchstring:='Q51',
        IF (@matchstring='Q51' AND keystroke='Q',
          @matchstring:='Q51Q',
          @matchstring:=keystroke
        )
      )
    ) AS matchpart
  FROM
    (SELECT @matchstring:=''),
    Call_Log
  WHERE
    -- Your criteria here, might be "StationID=blah"
  ORDER BY
    Call_Log.`timestamp`
) AS baseview
WHERE matchpart='Q51Q'
;