加入两个表,只返回第一个

时间:2017-02-17 22:58:08

标签: join left-join

有什么方法可以改进这段代码吗?我试图根据B和C之间的文件名匹配,同时显示B中的所有列和C中的另一列

SELECT B.filename, B.request_num, B.attachment_name, 
B.date_time, B.received_date, B.ID, C.station_code
FROM B_attachments B
JOIN  C_fact C ON C.filename = B.filename
WHERE C.station_code LIKE '%OAK%'

我要问的是,无论如何我都可以使用SELECT *而不是写出所有列名。使用SELECT *返回B和C中的所有列。我只想要B和C中的一列。我需要这个,因为我将复制此代码用于其他具有比B更多列的表。使用LEFT JOIN并没有帮助我无论是。

任何帮助将不胜感激。感谢

3 个答案:

答案 0 :(得分:1)

SELECT B.*, C.station_code
FROM B_attachments B
JOIN  C_fact C ON C.filename = B.filename
WHERE C.station_code LIKE '%OAK%'

这应该做的伎俩

答案 1 :(得分:1)

SELECT B.*, C.station_code
FROM ...

应该这样做。

答案 2 :(得分:0)

我认为这符合您的规范(“使用SELECT *而不是写出所有列名称”,“改进代码”):

SELECT *
  FROM B_attachments
       NATURAL JOIN
       ( SELECT filename, station_code
           FROM C_fact
          WHERE station_code LIKE '%OAK%' ) C;