首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >满足WHERE子句中的所有条件

满足WHERE子句中的所有条件
EN

Stack Overflow用户
提问于 2014-09-30 10:51:23
回答 3查看 88关注 0票数 1

我想检索具有多个条件的数据,其中每个条件将包含某些字段中的某些关键字。

表结构如下:

sid nid cid数据

50%-7%-5%

50 /7/6/aa

50%-7%-8%

51 -7-5分钟

51岁,7岁,6岁

52秒7秒8秒

我想检索满足这两个条件的sid:

when (cid=5和类似‘%ee%’的数据)

when (cid=8和类似‘%ff%’的数据)

检索到的sid应该只有50,而不是50、51和52。

当我像下面这样写sql时,它得不到正确的结果:

代码语言:javascript
复制
SELECT * FROM webform_submitted_data WHERE
  (cid=5 AND data LIKE '%ee%') AND (cid=8 AND data LIKE '%ff%')

所以我改成了

代码语言:javascript
复制
SELECT * FROM webform_submitted_data WHERE 
CASE `cid`  
WHEN '5' THEN `data` LIKE '%ee%'  
WHEN '8' THEN `data` LIKE '%ff%' 
END

但这也不能给出正确的结果。

有什么方法可以得到我想要的结果吗?

EN

回答 3

Stack Overflow用户

发布于 2014-09-30 10:56:21

如何计算SID的数量,并且它应该与您的条件的数量相匹配?

代码语言:javascript
复制
SELECT  sid
FROM    webform_submitted_data
WHERE   (cid=5 AND data LIKE '%ee%')        -- first condition
        OR (cid=8 AND data LIKE '%ff%') -- second condition
GROUP   BY  sid
HAVING  COUNT(*) = 2                        -- number of conditions
票数 0
EN

Stack Overflow用户

发布于 2014-09-30 11:00:23

你试过手术室吗?

代码语言:javascript
复制
SELECT * FROM webform_submitted_data WHERE
  (cid=5 AND data LIKE '%ee%') OR (cid=8 AND data LIKE '%ff%')
票数 0
EN

Stack Overflow用户

发布于 2014-09-30 11:24:54

在这里,我们根据第一个条件获取行,然后使用exists查看第二个条件是否也匹配

代码语言:javascript
复制
SELECT T1.* FROM
(SELECT * FROM webform_submitted_data
WHERE 
CASE `cid`  
WHEN '5' THEN `data` LIKE '%ee%' 
END 
)T1
WHERE EXISTS 
(

SELECT 1 FROM webform_submitted_data w
WHERE 
CASE `cid`  
WHEN '8' THEN `data` LIKE '%ff%'
END 
AND w.sid = T1.sid
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26111995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档