当前位置: 首页 > 知识库问答 >
问题:

SQL使用不同的select连接同一个表

弓晔
2023-03-14

我有一个列为col1-col10的表tablename。并非每一行都填充了col4,但每一行都填充了col1、col2、col3。我想在col4满足条件时获取所有{col1,col2,col3}元组,然后从tablename中获取与元组{col1,col2,col3}匹配的所有行。

我不确定是否应该使用内部联接、左联接或其他方式?(我认为内部连接和左连接都应该给我相同的结果)下面的查询给了我一个语法错误“输入不匹配为”。编写此查询的正确方法是什么?

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

共有1个答案

漆雕成弘
2023-03-14

可以使用存在

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
)
 类似资料:
  • 问题内容: 我只知道有关SQL的最低要求,所以请把我当作一个完整的菜鸟! 我有一个表,其中有很多行,但是其中一些行可以通过id配对,我想合并这些行的返回数组。 作为按比例缩小的版本,想象一下我表的上方,我的目标是返回2个结果 基于ID相关并且c2的值为’on’ 我的尝试是从一些阅读中得到以下内容,但没有得到 任何帮助将不胜感激 编辑 我认为Id只需发布下面的语法就可以了,这要归功于下面的答案: 再

  • 问题内容: 我有2张桌子。为了简化: 表1,用户: userId int,userName nvarchar(50) 表2消息: msgId int,msgFrom int,msgTo int … msg1和msg2都包含userId。现在,我想获取所有消息,但是我想要用户名而不是msgFrom。我知道该怎么办: 一切正常,花花公子。获取用户名而不是msgTo的方法相同。现在的问题是,如何在同一调

  • 问题内容: 影片有很多活动 我正在尝试获取将来安排有活动的所有视频。 我已经有这个了: 此方法有效,但是如果同一视频将来有多个事件,它将为我提供重复的视频记录。当然,我可以遍历数组并清除重复项,但是必须有一种SQL方式可以做到这一点。 我尝试添加一个 但是它只返回ID字段,而不是整个记录。 问题答案: 尝试使用代替,您将不会再看到重复的视频结果。 另外,您应该在named_scope中使用lamb

  • 问题内容: 我有一张桌子和一张桌子。 该表具有以下结构: 所有用户( 投诉者 和 投诉解决者) 都位于table中。 如何编写查询以显示两列的用户名? 这给了我一个: 但我不知道如何编写,因此两列均显示用户名而不是ID。 问题答案:

  • 问题内容: 我有两张桌子和。 第一台具有与第二表有田,, 我想要一个帐户进行多少次子请求以及他进行了多少次抓取的计数(基于,如果该帐户中填充了他的) 在一个查询中 输出: 问题答案: 使用类似 诀窍是使用表两次:和,每次由不同的字段联接。 关于效率的注意事项:我不确定,但是我相信这个解决方案比子查询解决方案要快,尽管没有对其进行测试(至少不会慢一些)。只要有可能,我总是更喜欢子查询。

  • 我有三张桌子: 我想从表1中选择COL1,从表2中选择COL5,从表3中选择COL4 它喜欢两个联接表,但是当我使用以下查询时,它不起作用,COL5是空白的。 请帮忙。 PS我复制了之前的一个类似示例,但输出不同。