数据库
首页 > 数据库> > MySQL加入LIKE语句

MySQL加入LIKE语句

作者:互联网

我需要计算数据库中每个组中有多少用户.不幸的是,数据库设计不是很好,并且用户uid是针对组存储在组表中的LONGTEXT字段列名称owncloudusers中.
owncloudusers数据示例:

{i:0;s:36:”25C967BD-AF78-4671-88DC-FAD935FF1B26″;i:1;s:36:”40D6866B-EA06-4F39-B509-8CE551CC1924″;i:2;s:36:”7724C600-DE23-45C8-8BFD-326B0138E029″;i:3;s:36:”D6FF37EC-11F4-471F-94C9-F3A28416CF1F”;i:4;s:36:”F70C6D03-B7BA-44E4-B703-9AF3EED9BC03″;}

我以为可以在联接上使用带有LIKE的查询来比较用户的uid,并查看owncloudusers内是否存在匹配项.

我最接近的是:

SELECT T1.owncloudname, count(T2.owncloud_name) AS Users
FROM oc_ldap_group_members T1
LEFT JOIN oc_ldap_user_mapping T2 ON T1.owncloudusers LIKE('%:"'||T2.owncloud_name||'";%') 
GROUP BY owncloudname;

T1表包含分组以及谁被标记到该分组
T2表保存用户数据.列owncloud_name是用户uid列

我尝试了一些在LIKE join和LIKE(‘%:“’T2.owncloud_name’”;%’)的stackoverflow CONCAT上找到的方法

但是没有喜悦.我当前的语句在所有组中返回0个用户,但是我知道这是不对的.

我知道很多,但是关于联接的问题不确定下一步要去哪里.

任何帮助将不胜感激.

解决方法:

我想你需要一个简单的

    SELECT T1.owncloudname, count(*) AS Users
    FROM oc_ldap_group_members T1
    LEFT JOIN oc_ldap_user_mapping T2 ON T1.owncloudusers LIKE '%T2.owncloud_name%' 
    GROUP BY owncloudname;

如果需要连拍请尝试

    SELECT T1.owncloudname, count(T2.owncloud_name) AS Users
    FROM oc_ldap_group_members T1
    LEFT JOIN oc_ldap_user_mapping T2 ON T1.owncloudusers 
       LIKE concat( '%',T2.owncloud_name,'%' )
    GROUP BY owncloudname;

标签:owncloud,join,sql-like,mysql
来源: https://codeday.me/bug/20191118/2029776.html