我有一张叫的桌子user_meta。在该表中,我有以下栏目:ID,userID,meta_key,meta_value
user_meta
ID
userID
meta_key
meta_value
我有另一个表users,唯一重要的列是ID,我想将其与user_meta表行进行比较。
users
该users表如下所示:
ID | email | etc... 1 | email@test.com | 5 | testa@a.com | 6 | .... | 7 | .... |
假设我有一个表(user_meta)像这样:
ID | userID | meta_key | meta_value 2 | 1 | companyID | 2 3 | 1 | user_type | staff 4 | 5 | companyID | 2 5 | 5 | user_type | staff 6 | 6 | companyID | 4 7 | 6 | user_type | customer
我想为每个检索单个行userID,但前提是公司ID和user_type正确。
我想检索在查询中发送的具有相同companyID的所有用户,因此,假设$ companyID = 2,然后所有具有user_type=’staff’的用户。
user_type
因此,user_meta.userID必须等于users.ID,user_meta.companyID必须等于2,user_meta.user_type必须等于“ staff”。
我需要符合这些条件的所有用户的列表。
结果将userID返回1和5。他们都有companyID = 2,而且都有user_type = staff
companyID = 2
user_type = staff
您需要user_meta为每个要匹配的属性加入一次。
SELECT u.* FROM users AS u JOIN user_meta AS m1 ON u.id = m1.userID JOIN user_meta AS m2 ON u.id = m2.userID WHERE m1.meta_key = 'companyID' AND m1.meta_value = :companyID AND m2.meta_key = 'user_type' AND m2.meta_value = 'staff'