作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试从 wp_posts 表中选择 ID,我需要在其中执行 3 个条件。
ID 是否与 wp_postmeta 表中的 post_id 匹配,其中 meta_key = ' gtp_analytics_client_id' 并且 meta_value 不为空。
ID 是否与 wp_postmeta 表中的 post_id 匹配,其中 meta_key = ' gtp_conversion_uploaded' 并且 meta_value 不等于 1。
我是 SQL 初学者。这就是我现在拥有的,但我不能使用多个 IN。所以我想我需要换一种方式。
SELECT ID
FROM wp_posts
WHERE ID IN (SELECT post_id
FROM wp_postmeta
WHERE meta_key = 'gtp_analytics_client_id' AND meta_value != '')
AND IN (SELECT post_id
FROM wp_postmeta
WHERE meta_key = 'gtp_conversion_uploaded' AND meta_value != 1)
AND IN (SELECT post_id
FROM wp_postmeta
WHERE meta_key = 'gtp_revenue' AND meta_value != '')
我收到以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'gtp_conversion_uploaded' A' at line 4
最佳答案
and
不是 in
运算符的一部分,它是三个独立的 in
运算符,因此您需要第一个操作数(ID
) 所有的:
SELECT ID
FROM wp_posts
WHERE ID IN ( ... )
AND ID IN ( ... )
AND ID IN ( ... )
你也可以把它写成三个连接:
SELECT
p.ID
FROM
wp_posts p
INNER JOIN wp_postmeta m1 ON m1.post_id = p.ID AND m1.meta_key = 'gtp_analytics_client_id' AND m1.meta_value != ''
INNER JOIN wp_postmeta m2 ON m2.post_id = p.ID AND m2.meta_key = 'gtp_conversion_uploaded' AND m2.meta_value != 1
INNER JOIN wp_postmeta m3 ON m3.post_id = p.ID AND m3.meta_key = 'gtp_revenue' AND m3.meta_value != ''
关于mysql - SQL 多个 WHERE IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27402750/
我是一名优秀的程序员,十分优秀!