有什么方法可以改进这段代码吗?我试图根据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并没有帮助我无论是。
任何帮助将不胜感激。感谢
答案 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;