mysql - 如何用连接方式解决这个子查询?

标签 mysql sql join

我想要的这个查询将创建 SQL 连接方式。

Select count(*) as testOffers From table1 Where posted_test_id in (Select post_test_id From 
table2 Where user_id = 367) AND is_test_offer=1;

最佳答案

这相当于:

Select count(*) as testOffers
From table1 t1 join
     (Select distinct post_test_id 
      From table2
      Where user_id = 367
     ) t2
     on t1.posted_test_id = t2.post_test_id
where t1.is_test_offer = 1;

请注意,select unique 在子查询中非常重要,因为两者在语义上是等效的。 in 不需要这样做,因为重复并不重要。

在您的特定情况下,可能不需要select unique。这是因为子查询不返回重复项。

关于mysql - 如何用连接方式解决这个子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58658006/

相关文章:

mysql - SQL 加入 NOT IN() 不起作用

mysql - 从查询中检索最大时间戳

sql - 在 SQL 中如何使用 COUNT 转换为百分比?

java - 如何在android中使用契约(Contract)类?

regex - 在文本文件中加入具有特定模式的行

mysql - 从大型 CSV 文件导入数据

mysql - 约束符号 vs 外键索引名称 -> 有什么区别?

MySQL 对关联表上的多行进行过滤

mysql - 如何在Mysql中查找匹配百分比

sql - 内连接 vs 交叉连接 vs 交叉应用