1

我有 1000 多条患者记录的患者表。所有记录均由 5 位管理员创建。admin_id我使用列将患者表中的患者分开。当管理员“A”登录时,他只能看到他创建的那些患者。现在我想从病人表中搜索病人。我的搜索结果将仅是由管理员“A”创建的患者记录;

MySQL查询:

SELECT 
    *
FROM
    patient
WHERE
    admin_id = 36 AND fname LIKE '%test%'
        OR email LIKE '%test%'
        OR mobile LIKE '%test%'
ORDER BY ID DESC 

(这里我从所有记录中得到结果,但我只需要从 admin_id = 36 的地方。)

4

2 回答 2

4

您必须在 OR 周围加上括号 () 以便表达式仅在admin_id36 时为真,其余的也为真

SELECT 
    *
FROM
    patient
WHERE
    admin_id = 36 AND (fname LIKE '%test%'
        OR email LIKE '%test%'
        OR mobile LIKE '%test%')
ORDER BY ID DESC 
于 2020-07-13T22:26:30.690 回答
0

尝试:-

SELECT 
    *
FROM
    patient
WHERE
    (admin_id = 36 AND fname LIKE '%test%')
        OR (email LIKE '%test%')
        OR (mobile LIKE '%test%')
ORDER BY ID DESC 
于 2020-07-13T22:27:07.697 回答