gpt4 book ai didi

mysql - Where 子句等于一个字段,不等于另一个

转载 作者:行者123 更新时间:2023-11-29 05:33:55 25 4
gpt4 key购买 nike

这是那些日子之一,我就是想不通。

我有以下查询:

SELECT * FROM wp_posts
JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID
WHERE term_taxonomy_id = 80

显然,这会选择类别 ID 80 中的所有帖子。我需要做的是选择类别 80 但不在类别 109 中的所有帖子。

我已经试过了,但它只会从类别 80 中选择相同的帖子。

SELECT * FROM wp_posts
JOIN wp_term_relationships ON wp_term_relationships.object_id = wp_posts.ID
WHERE term_taxonomy_id = 80
AND term_taxonomy_id = 109

这是表结构:

wp_posts

| ID |
------------
| 1 |
| 2 |

wp_term_relationships

| object_id | term_taxonomy_id |
|-----------|------------------|
| 1 | 80 |
| 2 | 80 |
| 1 | 109 |

object_id 匹配 post_id

查询应该只返回 ID 2,因为 ID 1 在 80 和 109 中。

我知道我已经这样做了一百万次了,但我就是一辈子都无法让它发挥作用。有帮助吗?

最佳答案

你可以这样写:

SELECT *
FROM wp_posts
JOIN wp_term_relationships
ON wp_term_relationships.object_id = wp_posts.ID
WHERE term_taxonomy_id = 80
AND wp_posts.id NOT IN
( SELECT object_id
FROM wp_term_relationships
WHERE term_taxonomy_id = 109
)
;

(参见 § 13.2.10.3 "Subqueries with ANY, IN, or SOME" in the MySQL 5.6 Reference Manual 。)

关于mysql - Where 子句等于一个字段,不等于另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com