SQL-根据另一个表中给出的匹配值在一个表中进行选择

拥抱时间

经过无休止的尝试来处理R中的大型(3-35gb)csv文件后,我已转向使用SQL处理这些数据集。因此,我在R环境中使用此代码(使用基于SQlite的RSQLite程序包),但它不应减损我的SQL问题!

我的问题:如何根据另一个表中给出的匹配值来选择一个表?

我想举例说明。我有以下表格格式:

“数据”表

Symbol| Value| EX
A  | 1  | N       
A  | 1  | N     
A  | 2  | T  
A  | 3  | N  
A  | 4  | N  
A  | 5  | N  
B  | 1  | P       
B  | 2  | P  
B  | 2  | N  
B  | 2  | N  
B  | 3  | P  
B  | 5  | P  
B  | 6  | T  
... 

我想根据下表示例表中给出的特定条件选择符号交换值匹配的所有条目

“ Symbolexchange”表:

Ticker| Exchange
A  | N       
B  | P  
... 

(请注意,符号股票代码指的是同一属性,EXExchange指的是同一属性)

所以我的目标输出是,在交换为N等情况下,它仅保留A项:

Symbol| Value| EX
A  | 1  | N       
A  | 1  | N     
A  | 3  | N  
A  | 4  | N  
A  | 5  | N  
B  | 1  | P       
B  | 2  | P  
B  | 3  | P  
B  | 5  | P  
... 

尽管我对它们不满意,但我可以通过两种方法做到这一点。

此方法将引用表添加到原始表旁边的列中,这是多余的。

SELECT *
FROM Data
INNER JOIN Symbolexchange 
ON Data.EX=Symbolexchange.EXCHANGE
AND Data.SYMBOL=Symbolexchange.TICKER

此方法也可以直接完成工作,但比上述方法慢。

SELECT *
FROM Data
WHERE EX=(SELECT exchange FROM Symbolexchange WHERE ticker = SYMBOL)

有没有更好,更快的方法对此进行编程?由于数据集的大小,速度非常重要。欢迎对我的代码发表任何其他评论!

谢谢

RBarryYoung

您可以做两件事来提高性能:

首先(也是最重要的)向表中添加键或索引。我不知道SQLite,但通常有这样的命令:

CREATE INDEX DataIX1 ON Data(Symbol,EX)

您也会在另一个桌子上想要一个:

CREATE INDEX SymbolExchangeIX1 ON Symbolexchange(Ticker,Exchange)

您可能需要在名称上加上“ ..”或“ ..” ...

第二件事是,尽管您的第一个查询可能是最好的方法,但是您应该只返回您实际需要/想要的列:

SELECT Data.*
FROM Data
INNER JOIN Symbolexchange 
ON Data.EX=Symbolexchange.EXCHANGE
AND Data.SYMBOL=Symbolexchange.TICKER

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将表中的两个值与表sql中的另一个值进行匹配

来自分类Dev

将一个表中的值链接到另一个表,并根据sql中另一个表中的列对一个表进行切片

来自分类Dev

使用另一个表中的条件从表中进行SQL查询

来自分类Dev

一个表中的SQL更新值与Oracle SQL Developer中的另一个表的值匹配

来自分类Dev

从SQL Server链接表中插入到另一个Access.accdb中进行选择

来自分类Dev

根据第二个表的另一个值(sql)在第一个表中选择一个值

来自分类Dev

SQL查询-从一个表中选择全部,在另一个表中匹配记录

来自分类Dev

如何根据另一个表中的平均值对SQL表进行排序

来自分类Dev

SQL根据另一个表将值分配到表中

来自分类Dev

SQL:如何从另一个表中的一个表中选择不同的值?

来自分类Dev

SQL查询以基于另一个表中的列值从一个表中选择

来自分类Dev

SQL:如何从另一个表中的一个表中选择不同的值?

来自分类Dev

使用 Oracle SQL 从基于从另一个表拆分的正则表达式的表中进行选择

来自分类Dev

使用另一个表中的值对SQL表进行排序

来自分类Dev

SQL通过使用另一个表值进行选择

来自分类Dev

SQL通过使用另一个表值进行选择

来自分类Dev

SQL查询另一个表中的值

来自分类Dev

SQL:选择与另一个表中的内容匹配的所有行

来自分类Dev

SQL Server:根据另一个表中的日期进行过滤

来自分类Dev

SQL:使用另一个表中的匹配祖先进行联接(内部联接)

来自分类Dev

将表中的两个值匹配到表sql中的另一个值

来自分类Dev

如何根据 SQL Server 中的另一个表列值限制插入到表?

来自分类Dev

SQL选择-如果另一个表中存在值,则计算列

来自分类Dev

选择多个 sql 表给出一个值“?”

来自分类Dev

SQL中另一个表的更新表给出了意外结果

来自分类Dev

SQL中另一个表的更新表给出了意外结果

来自分类Dev

如何基于另一个表的多个列中的值从表中提取多个行,然后在SQL中进行串联?

来自分类Dev

从表2中选择一个值,该值取决于表1(Oracle SQL)中的另一个值

来自分类Dev

SQL根据某种条件从另一个表中插入/更新到一个表中

Related 相关文章

  1. 1

    将表中的两个值与表sql中的另一个值进行匹配

  2. 2

    将一个表中的值链接到另一个表,并根据sql中另一个表中的列对一个表进行切片

  3. 3

    使用另一个表中的条件从表中进行SQL查询

  4. 4

    一个表中的SQL更新值与Oracle SQL Developer中的另一个表的值匹配

  5. 5

    从SQL Server链接表中插入到另一个Access.accdb中进行选择

  6. 6

    根据第二个表的另一个值(sql)在第一个表中选择一个值

  7. 7

    SQL查询-从一个表中选择全部,在另一个表中匹配记录

  8. 8

    如何根据另一个表中的平均值对SQL表进行排序

  9. 9

    SQL根据另一个表将值分配到表中

  10. 10

    SQL:如何从另一个表中的一个表中选择不同的值?

  11. 11

    SQL查询以基于另一个表中的列值从一个表中选择

  12. 12

    SQL:如何从另一个表中的一个表中选择不同的值?

  13. 13

    使用 Oracle SQL 从基于从另一个表拆分的正则表达式的表中进行选择

  14. 14

    使用另一个表中的值对SQL表进行排序

  15. 15

    SQL通过使用另一个表值进行选择

  16. 16

    SQL通过使用另一个表值进行选择

  17. 17

    SQL查询另一个表中的值

  18. 18

    SQL:选择与另一个表中的内容匹配的所有行

  19. 19

    SQL Server:根据另一个表中的日期进行过滤

  20. 20

    SQL:使用另一个表中的匹配祖先进行联接(内部联接)

  21. 21

    将表中的两个值匹配到表sql中的另一个值

  22. 22

    如何根据 SQL Server 中的另一个表列值限制插入到表?

  23. 23

    SQL选择-如果另一个表中存在值,则计算列

  24. 24

    选择多个 sql 表给出一个值“?”

  25. 25

    SQL中另一个表的更新表给出了意外结果

  26. 26

    SQL中另一个表的更新表给出了意外结果

  27. 27

    如何基于另一个表的多个列中的值从表中提取多个行,然后在SQL中进行串联?

  28. 28

    从表2中选择一个值,该值取决于表1(Oracle SQL)中的另一个值

  29. 29

    SQL根据某种条件从另一个表中插入/更新到一个表中

热门标签

归档