如何从另一个表返回单个行时连接两个表

时间:2014-11-13 08:44:28

标签: sql sql-server database

这是我的示例表:

Model Table

MODEL_NO    | MODEL_NAME| ITEM_CODE 
  A1            TEST        1
  A1            TEST        2 
  A2            TEST2       1
  A2            TEST2       2


Data Table

DATE           MODEL_NO    DATA_VAL
2014-11-10        A1         3.4
2014-11-10        A1         4.2
2014-11-11        A2         1.9
2014-11-12        A2         1.8

期望的结果:

   DATE        MODEL_NO    DATA_VAL   MODEL_NAME
2014-11-10        A1         3.4        TEST
2014-11-10        A1         4.2        TEST
2014-11-11        A2         1.9        TEST2
2014-11-12        A2         1.8        TEST2

我考虑过使用Subquery或者使用distinct进行简单的表连接,但我想知道是否有一种首选的方法。

以下是使用distinct

的示例
SELECT DISTINCT DATA_TB.DATE, DATA_TB.MODEL_NO, DATA_TB.DATA_VAL, MODEL_TB.MODEL_NAME
FROM DATA_TB
LEFT JOIN MODEL_TB
  ON DATA_TB.MODEL_NO = MODEL_TB.MODEL_NO

与上述问题相关的生产查询实际上要长得多,并且选择了大约25列,但我已将问题简化为我想要实现的目标。

这是实现这一目标的最佳方法吗?或者利用分组?或子查询?

1 个答案:

答案 0 :(得分:2)

首先从distinct Model_no and model_name中选择model table,然后使用join选择data table结果。试试这个。

SELECT a.DATE ,a.MODEL_NO,a.DATA_VAL,B.MODEL_NAME
FROM   data a
       JOIN (SELECT DISTINCT MODEL_NO,
                             MODEL_NAME
             FROM   model) B
         ON a.MODEL_NO = b.MODEL_NO