SQL与具有不同选择的同一表联接

问题描述

我有一个表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
)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...