如何使类似 SQL 的条件搜索只显示一组特定的行 [重复]
Posted
技术标签:
【中文标题】如何使类似 SQL 的条件搜索只显示一组特定的行 [重复]【英文标题】:How to make SQL like condition search only show a specific set of rows [duplicate] 【发布时间】: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 我就是这样说的
【参考方案1】:
你需要括号:
WHERE (fname LIKE '%' OR lname LIKE '%' OR pnumber LIKE '%') AND contacts.uid = 8
【讨论】:
以上是关于如何使类似 SQL 的条件搜索只显示一组特定的行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章