[英]How to make inner join on this query
我有這個查詢:
SELECT hit.timestamp,hit.id,config.Name,hit.meter_id,levels.LevelName, pos.sm_pos , hit.hit_value
FROM pos,hit,controllers,levels,config
WHERE hit.id=config.id
AND hit.meter_id=levels.id
AND pos.id=hit.id
AND pos.controller_id=controllers.id;
如何從中進行內部聯接查詢? 有別名還是什么? 我一直在尋找,但找不到用於多表查詢的任何內容。
現在,您聯接表的方式已經過時了。 它使用較早,現在我們根據需要使用INNER/NATURAL/LEFT OUTER/RIGHT OUTER/CROSS
等關鍵字來聯接表。
SELECT hit.timestamp,
hit.id,
config.Name,
hit.meter_id,
levels.LevelName,
pos.sm_pos,
hit.hit_value
FROM hit
INNER JOIN config
ON hit.id = config.id
INNER JOIN levels
ON hit.meter_id = levels.id
INNER JOIN POS
ON pos.id = hit.id
INNER JOIN controllers
ON pos.controller_id = controllers.id;
注意:您發布的查詢是根據SQL-89標准,而我發布的第二個查詢是根據SQL-92。
SQL-92標准引入了INNER JOIN .. ON
和OUTER JOIN .. ON
,以替換SQL-89的更復雜的(?)語法。
如果要重新格式化查詢,可以這樣進行:
SELECT
H.timestamp,
H.id,
F.Name,
H.meter_id,
L.LevelName,
P.sm_pos,
H.hit_value
FROM pos AS P
INNER JOIN controllers AS C ON P.controller_id = C.id
INNER JOIN hit AS H ON P.id = H.id
INNER JOIN levels AS L ON H.meter_id = L.id
INNER JOIN config AS F ON H.id =F.id;
請注意,我可以隨意在表名上添加別名,這可以大大簡化您的查詢。
要了解聯接在MySQL中的工作方式,請在手冊中閱讀有關它的信息 。 傑夫·阿特伍德(Jeff Atwood)寫了一篇有關聯接的很好的教程,您可以在這里找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.