mysql and not_MySQL查询与AND,OR和NOT

bd96500e110b49cbb3cd949968f18be7.png

Lets say I have a table of articles with as many to many relationship with topics. Each topic assigned to an article has a type field which can contain 1 of 3 values AND, NOT, and OR.

Articles

id

....

Topics

id

....

ArticleTopics

article_id

topic_id

type

I want to create a query that says returns all articles that have:

ALL of the following topics: 1, 2, 3 (AND association)

AND

ANY of the following topics: 4, 5, 6 (OR association)

AND

NONE of the following topics 7, 8 (NOT association)

How do I go about creating this query?

Thanks in advance!

解决方案

The ALL and NOT parts are very simple, you just chain them with ANDs:

SELECT X FROM Y WHERE a AND b AND c AND NOT d AND e AND NOT e.

And the ORs go between:

SELECT X FROM Y WHERE ((a AND b AND c) AND (d OR e OR f)) AND NOT g AND NOT h

replace small numbers with comparisons and you're done.

So if you want to do this in code, sort your conditions and then just chain them together as a String. Be careful to avoid SQL-Insertions.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值