在wordpress中创建用户时,有一个复选框列表,我将复选框的id值存储为用户元表中的逗号分隔,如1,5,6,8,10。等。
| user_id | meta_key | meta_value |
---------------------------------
| 1 | service | 1,4,5,10 |
| 2 | service | 4,5,6 |
现在我正在开发搜索功能以及名字和城市,我必须获得用户列表。
因此,创建用户时会出现相同的复选框列表。在这里,我必须获取选中的值并在usermeta表中的元值中搜索它,该值以逗号分隔存储并获取匹配的用户。
示例:元键是专业,存储的值是user_1 1,4,5,10,user_2是4,5,6。
现在,如果从搜索1,4值中选中,那么它应该返回用户。 在这种情况下,它应该返回user1和user2。
如果我搜索1,10被选中,它将只返回user1。
目前我正在执行自定义查询以获取用户。
请帮助我将值与逗号分隔的元值进行匹配以获取用户。
谢谢。
答案 0 :(得分:1)
您可以使用FIND_IN_SET
所以:
SELECT * FROM your_table
WHERE FIND_IN_SET(1, meta_value) AND FIND_IN_SET(4, meta_value);
答案 1 :(得分:0)
FIND_IN_SET一次只能搜索一个字符串。
您可以使用此查询来查找用户
SELECT
wp_users.*
FROM wp_users
JOIN wp_usermeta
ON wp_users.id = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'service'
WHERE CONCAT(",", wp_usermeta.meta_value, ",") REGEXP ",(1|4),"