1

我有这种结构的表。

表 #1:用户(ID,用户名)

1, 'john777'
2, 'andy'
3, 'tom'

表 #2:user_meta (meta_ID, user_ID, 'meta_name', 'meta_value')

1, 1, 'first_name', 'John'
2, 1, 'last_name', 'Smith'
3, 2, 'first_name', 'Andy'
4, 2, 'last_name', 'Pete'
5, 3, 'first_name', 'Thomas'
6, 3, 'last_name', 'Tan'
7, 3, 'other_random_meta', 'abcxyz'

对于熟悉 WordPress 的你们来说,这是他们的数据库结构。我想要做的是根据用户名和全名(由名字和姓氏组成)获取与我的搜索词匹配的用户的用户 ID。

换句话说,我希望搜索为这些搜索词返回 1:“joh”、“john7”、“smith”、“john smi”、“smith jo”

4

2 回答 2

1
于 2012-11-02T19:06:29.273 回答
1
SELECT DISTINCT ID FROM 
(SELECT ID AS ID FROM users WHERE user_name LIKE 'YOURSEARCH%' 
UNION 
SELECT t1.user_id FROM 
  (SELECT user_id, meta_value AS firstName FROM user_meta WHERE meta_name ='first_name') AS t1 
INNER JOIN 
  (SELECT user_id, meta_value AS lastName FROM user_meta WHERE meta_name ='last_name') AS t2 ON t1.user_id=t2.userID 
WHERE concat_ws(' ',lastName,firstName) LIKE'YOURSEARCH%')

这应该会为您提供与您的搜索条件相匹配的唯一用户 ID

于 2012-11-02T19:44:42.277 回答