我想检索具有多个条件的数据,其中每个条件将包含某些字段中的某些关键字。
表结构如下:
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时,它得不到正确的结果:
SELECT * FROM webform_submitted_data WHERE
(cid=5 AND data LIKE '%ee%') AND (cid=8 AND data LIKE '%ff%')所以我改成了
SELECT * FROM webform_submitted_data WHERE
CASE `cid`
WHEN '5' THEN `data` LIKE '%ee%'
WHEN '8' THEN `data` LIKE '%ff%'
END但这也不能给出正确的结果。
有什么方法可以得到我想要的结果吗?
发布于 2014-09-30 10:56:21
如何计算SID的数量,并且它应该与您的条件的数量相匹配?
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发布于 2014-09-30 11:00:23
你试过手术室吗?
SELECT * FROM webform_submitted_data WHERE
(cid=5 AND data LIKE '%ee%') OR (cid=8 AND data LIKE '%ff%')发布于 2014-09-30 11:24:54
在这里,我们根据第一个条件获取行,然后使用exists查看第二个条件是否也匹配
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
)https://stackoverflow.com/questions/26111995
复制相似问题