我有两张桌子。 我从中选择的表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
我不想使用"加入",还有其他方法吗?
谢谢!
答案 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,则可以使用子查询。