我有一张名为 的表user_meta。在该表中,我有以下列:ID、userID、meta_key、meta_value
我有另一个表,名为users,这是唯一重要的列ID,我想将其与user_meta表行进行比较。
该users表看起来像:
ID | email | etc...
1 | email@test.com |
5 | testa@a.com |
6 | .... |
7 | .... |
Run Code Online (Sandbox Code Playgroud)
假设我有一个表(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
Run Code Online (Sandbox Code Playgroud)
我想为每个检索一行userID,但前提是公司 ID 和 user_type 正确。
我想检索具有与我在查询中发送的相同 companyID 的所有用户,因此假设 $companyID=2,然后是具有 =' user_typestaff' 的所有用户。
因此 user_meta.userID 必须等于 users.ID,user_meta.companyID 必须等于 2,user_meta.user_type 必须等于 'staff'。
我想要一个符合这些条件的所有用户的列表。
userID返回结果为1 和 5。他们都有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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |