如何从一个表中获取SQL值,其中共享值在第二个表中匹配?

时间:2017-03-03 19:59:34

标签: sql select join

Table 1 = "device"
tkmodel name  description
======= ====  ================
300     ABCD  description abcd
300     EFGH  description efgh
115     IJKL  description ijkl
121     MNOP  description mnop
200     QRST  description qrst
115     UVWX  description uvwx
305     WXYZ  description wxyz
300     DCBA  description dcba

Table 2 = "model"
enum name                        tkmodel
==== ==========================  =======
0    Descriptive model name 300  300
1    Descriptive model name 115  115
2    Descriptive model name 200  200
3    Descriptive model name 121  121
4    Descriptive model name 305  305

我只是想通过说我对查询有一个非常基本的理解,并且可以自己做一些简单的查询,我只是不确定这个...我会认为它会是某种加入,但不是确定它会怎么做?

SELECT d.tkmodel, d.name, d.description FROM device d

鉴于上面的2个表,我想打印出3列。基本上,我希望“device”表中包含3列。但是,不是在表1中打印“device.tkmodel”号码,而是希望将“tkmodel”号码与表2中的一行匹配并打印“从表2中的该行命名“列。

因此,我尝试实现的结果如下所示:

device.name  model.name                  device.description
===========  ==========================  ==================
ABCD         Descriptive model name 300  description abcd
EFGH         Descriptive model name 300  description efgh
IJKL         Descriptive model name 115  description ijkl
MNOP         Descriptive model name 121  description mnop
QRST         Descriptive model name 200  description qrst
UVWX         Descriptive model name 115  description uvwx
WXYZ         Descriptive model name 305  description wxyz
DCBA         Descriptive model name 300  description dcba

所以目标是打印表1中的数据。但是,我想打印相应的“model.name,而不是打印表1中所示的”tkmodel“列。 “”表2中行"device.tkmodel = model.tkmodel"的字段。

表2中的“tkmodel”号码不重复,它是该表中的唯一值,因此应该只有一个匹配。

1 个答案:

答案 0 :(得分:3)

这是join的基本用例:

SELECT d.name, m.name, d.description
FROM   device d
JOIN   model m ON d.tkmodel = m.tkmodel