多行SQL where语句
这可能是一个简单的SQL语句,但现在我有一个“大脑冻结” 我有这张桌子多行SQL where语句,sql,Sql,这可能是一个简单的SQL语句,但现在我有一个“大脑冻结” 我有这张桌子 variant_id | filter_id 1585593211 4 1585593211 48 1585593212 4 1585593212 49 我需要获得具有过滤器id:4和48的变体id。在本例中,我希望得到1585593211这是一个“集合中的集合”查询 您可以尝试根据条件获取count,然后找到variant_idcount equal2 架构(MySQL v
variant_id | filter_id
1585593211 4
1585593211 48
1585593212 4
1585593212 49
我需要获得具有过滤器id:4和48的变体id。在本例中,我希望得到1585593211这是一个“集合中的集合”查询
您可以尝试根据条件获取count
,然后找到variant_id
count equal2
架构(MySQL v5.6)
查询#1
SELECT variant_id
FROM T t1
where filter_id in (4,48)
group by variant_id
HAVING COUNT(*) = 2;
| variant_id |
| ---------- |
| 1585593211 |
或 这是一个“集合中的集合”查询 您可以尝试根据条件获取
count
,然后找到variant_id
count equal2
架构(MySQL v5.6)
查询#1
SELECT variant_id
FROM T t1
where filter_id in (4,48)
group by variant_id
HAVING COUNT(*) = 2;
| variant_id |
| ---------- |
| 1585593211 |
或
您可以在中使用
来获取所有具有过滤器id的行
4
或48
。然后,按variant_id
分组,并检查在HAVING
子句中,distinctfilter_id
s的计数是否等于2
SELECT variant_id
FROM elbat
WHERE filter_id IN (4, 48)
GROUP BY variant_id
HAVING count(DISTINCT filter_id) = 2;
您可以在
中使用来获取所有具有过滤器id的行
4
或48
。然后,按variant_id
分组,并检查在HAVING
子句中,distinctfilter_id
s的计数是否等于2
SELECT variant_id
FROM elbat
WHERE filter_id IN (4, 48)
GROUP BY variant_id
HAVING count(DISTINCT filter_id) = 2;
group by,其中filter_id将过滤包含4和48的所有数据
对于特定的变量ID。
但是当我们添加
具有计数(不同的过滤器id)>1代码>
这将确保过滤器id中同时存在4和48
group by,其中filter_id将过滤包含4和48的所有数据
对于特定的变量ID。
但是当我们添加
具有计数(不同的过滤器id)>1代码>
这将确保过滤器id中同时存在4和48。请同时包含您的尝试。您正在使用哪些dbms?请同时包含您的尝试。您正在使用哪些dbms?这是唯一能正常工作的答案,因为它使用DISTINCT
。可能是=2
,这取决于实际问题是“必须只有4和48”还是“必须同时有4和48”。这是唯一正确的答案,因为它使用了不同的
。可能是=2
取决于实际问题是“必须只有4个和48个”还是“必须同时有4个和48个”,您需要计数(不同*)
否则多个4s或48s将导致一行。虽然您的代码可能作为答案进行更正,但详细说明了代码的作用,但它可以提高答案的质量。签出文章:请解释你的代码,尽管这是不言自明的。。根据您的建议,您需要count(distinct*)
否则多个4s或48s将导致一行。虽然您的代码可能作为答案进行更正,但详细说明了代码的作用,但它可以提高您答案的质量。签出文章:请解释你的代码,尽管这是不言自明的。。按照你的建议
SELECT variant_id
FROM TABLENAME where filter_id in (4,48) group by variant_id having count(distinct filter_id)>1;