从一个表中选择并查找另一个表并在输出中获得结果

时间:2017-05-03 13:36:01

标签: sql

我有两张桌子。 我从中选择的表1

Number     Code       Prefix      Area      Date
987654321  333        691         SOF       20170503
876543210  445        661         VAR       20170503
765432110  678        611         BOR       20170503
753357891  333        691         SHU       20170502
667788223  445        661         ZOR       20170502
812567111  678        611         NES       20170501

我想用于查找的表2

Code      Prefix      Type      Terminal
333       691         F         NP
445       661         M         P
678       611         F         P

在输出中我想要

Table1.Number     Table1.Code       Table1.Prefix      Table2.Status
987654321         333               691                F
876543210         445               661                M
765432110         678               611                F
753357891         333               691                F
667788223         445               661                M
812567111         678               611                F

基本上,对于Table1中的每一行,我想从Table2中放置状态,其中

Table1.Code = Table2.Code and Table1.Prefix = Table2.Prefix

我不想使用"加入",还有其他方法吗?

谢谢!

4 个答案:

答案 0 :(得分:0)

显而易见的解决方案是使用join,但因为您不想使用join

选项1

select 
    Table1.Number, 
    Table1.Code, 
    Table1.Prefix, 
    Table2.Status
from Table1, Table2
where Table1.Code = Table2.Code
and Table1.Prefix = Table2.Prefix

但这仍然是一个基本的连接,只是简写

1选项

select 
    Number, 
    Code, 
    Prefix, 
    (
        select Status 
        from Table2 
        where Code = Table1.Code
        and Prefix = Table1.Prefix
    ) as Status
from Table1

但是这只有在子查询返回1行时才有效,我认为这必须慢一些

答案 1 :(得分:0)

使用子查询:

SELECT
Number, 
Code, 
Prefix, 
(SELECT Table2.Type 
 FROM Table2 
 WHERE Table1.Code = Table2.Code AND Table1.Prefix=Table2.Prefix
) AS Status
FROM Table1

答案 2 :(得分:0)

SELECT Table1.Number, Table1.Code, Table1.Prefix, Table2.Status
FROM Table1
LEFT JOIN Table2 ON Table2.Code = Table1.Code

使用连接实际上是最好的解决方案

你也可以制作子查询或使用where语句,但这是一个非常糟糕的方法

然后你可以做

SELECT Table1.Number, Table1.Code, Table1.Prefix, Table2.Status
FROM Table1, Table2
WHERE Table1.Code = Table2.Code
  AND Table1.Prefix = Table2.Prefix

但这是一个非常糟糕的方式......如你所愿

答案 3 :(得分:-1)

  

我不想使用“加入”,那么还有其他方法吗?

是的,如果您不想使用JOIN,则可以使用子查询。