【问题标题】:How to make SQL like condition search only show a specific set of rows [duplicate]如何使类似 SQL 的条件搜索只显示一组特定的行 [重复]
【发布时间】:2019-04-08 08:56:11
【问题描述】:

我有一个查询,我从联系人表中获取信息,如下所示

还有像这样的数字表

我在搜索时获取联系信息及其号码,目前代码如下所示

SELECT contacts.id, fname, lname, email, address,uid,uniqid,
       group_concat(distinct pnumber order by pnumber) c,cid
FROM contacts
LEFT JOIN numbers
    ON contacts.uniqid = numbers.cid
WHERE fname LIKE '%' OR lname LIKE '%' OR pnumber LIKE '%' AND contacts.uid = 8 
group by id, fname, lname, email, address, uid, uniqid, cid

我正在尝试搜索关键字并仅获取属于该用户“uid”的联系人,例如我在此处设置为 8。显然它返回这个

为什么 AND 条件不起作用,我如何获取仅属于特定 uid 的联系人?

注意:很抱歉发布图片,我无法为这张表生成 ascii,因为它们太长了

【问题讨论】:

  • 为什么三个 LIKE 条件都带有通配符?它们的意思是“任何 fname、任何 lname 或任何 pnumber。你可以跳过它们
  • @LelioFaieta,我同意,看起来很奇怪。这与IS NOT NULL 相同。
  • @LeiloFaieta 我就是这样说的

标签: php mysql sql mysqli


【解决方案1】:

你需要括号:

WHERE (fname LIKE '%' OR lname LIKE '%' OR pnumber LIKE '%') AND contacts.uid = 8 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 2013-03-10
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多