我需要为高级搜索执行特定查询。
我提供了db结构的样本
id code content id_post -------- -------- ----------- ------------- 1 reg lazio 1 2 reg lazio 2 3 type typeX 1 4 type typeY 2
现在我必须在此表中进行一些搜索并获得正确的id_post,例如:
我希望所有id_post都有code = reg和content = typeY 在这种情况下,没有结果
2d示例 - >所有id_post代码= reg和content = lazio 结果必须是1和2
3d示例 - >所有id_post都有(code = reg和content = lazio)和(code = type and content = typeY) 结果必须是2
依旧......
如何设置三个查询?
答案 0 :(得分:0)
试试这个:
示例1:
select id_post from your_table where code = 'reg' and content = 'typeY'
示例2:
select id_post from your_table where code = 'reg' and content = 'lazio'
示例3:
select t1.id_post from your_table as t1
inner join (select id_post from your_table where code = 'type' and content = 'typeY') as t2 on t1.id_post = t2.id_post
where t1.code = 'reg' and t1.content = 'lazio'
我已经运行测试来验证结果。您可以在sqlfiddle
上自行验证示例3基本上是intersection,这就是and
和or
方法都不起作用的原因。您可以参考this question了解更多解决此类查询的方法。