问题描述
我有一个表colname列为col1-col10的表。 并非每一行都填充了col4 ,但是每一行都填充了col1,col2,col3。 我想在col4满足条件时获取所有{col1,col2,col3}元组,然后从表名中获取与元组{col1,col2,col3}匹配的所有行。
我不确定应该使用内部联接还是左联接或其他方法? (我认为内部联接和左联接都应给我相同的结果) 下面的查询给我一个语法错误“不匹配的输入AS”。编写此查询的正确方法是什么?
select col1,col2,col3
from tablename
where col4 >= 1000 AS A
INNER JOIN
(select *
FROM tablename) AS B
ON A.col1 = B.col1 AND A.col2 = B.col2 A.col3 = B.col3
解决方法
您可以使用exists
:
select t.*
from mytable t
where exists (
select 1
from mytable t1
where
t1.col1 = t.col1
and t1.col2 = t.col2
and t1.col3 = t.col3
and t1.col4 >= 1000
)