我有这个查询:
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
等关键字来联接表。
Refer Join in Mysql
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的更复杂的(?)语法。