如何在mysql中从字符串捕获文本?

如何在mysql中从字符串捕获文本?,mysql,sql,count,Mysql,Sql,Count,在这里,我试图获取注释列中字符串的中间值(登录),然后获取每个用户的计数。但我认为这不是正确的做法。你们还有别的办法吗 user# user ID Comments 101 user 1 ***log in*** : shera 101 user 1 ***log in*** : Mark 102 user 2 ***log out*** 105 user 5 ***log in*** : Mark 104 user 4 ***ideal**

在这里,我试图获取注释列中字符串的中间值(登录),然后获取每个用户的计数。但我认为这不是正确的做法。你们还有别的办法吗

user#   user ID Comments
101     user 1  ***log in*** : shera
101     user 1  ***log in*** : Mark
102     user 2  ***log out***
105     user 5  ***log in*** : Mark
104     user 4  ***ideal***
103     user 3  ***ideal***
101     user 1  ***ideal***
102     user 2  ***log out*** : since 5 mnt
105     user 5  ***log in*** : Mark
104     user 4  ***ideal***
103     user 3  ***log out***
需要为以下各项设计查询:

         log in ideal   log out
user 1    2       0        3
user 2    0       2        5
user 5    0       2        1
          ------------------
Total      2      4        9
谢谢考虑。
Jay

不确定这是最优化的方式,但如果您的表名是
comments
(或根据需要调整以下内容):


中间值之间总是有三个
*
吗?是的。它类似于(登录)。您希望结果是列还是行?也就是说,
user1登录2
user1理想0
user2登录0
,等等。确切地说,Joao,我只想创建每天有多少用户登录或注销一天的报告。和表末所有用户的累计总数。谢谢JScoobyCed。让我试试。在where子句附近有一个错误…:错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在我更新的“WHERE comment(如“%log in%”)附近使用的正确语法。抱歉,这对我来说是漫长的一天:)需要将
分组依据
放在每个子查询的末尾,而不是放在
WHERE
前面没问题。我真的很感谢你的帮助。这次我运行了这个查询,它运行得很好,但我在表中得到了多个user条目。我在查询结束时使用了GROUP函数,但它显示了错误的结果。我编辑查询。检查一下。谢谢,我看不到你的编辑。但我想我看到了问题所在。请参阅我的编辑,以使许多评论记录具有唯一性。
SELECT user, IFNULL(login,0) as login, IFNULL(ideal,0) as ideal,
       IFNULL(logout,0) as logout
FROM (
 SELECT userid, user
 FROM comments
 GROUP BY userid
) c
LEFT JOIN (
 SELECT userid, count(userid) AS login
 FROM comments
 WHERE comment LIKE '%log in%'
 GROUP BY userid
) c1 ON c.userid=c1.userid
LEFT JOIN (
 SELECT userid, count(userid) AS logout
 FROM comments
 WHERE comment LIKE '%log out%'
 GROUP BY userid
) c2 ON c.userid=c2.userid
LEFT JOIN (
 SELECT userid, count(userid) AS ideal
 FROM comments
 WHERE comment LIKE '%ideal%'
 GROUP BY userid
) c3 ON c.userid=c3.userid