我正在尝试在mysql上运行联接查询,正在使用以下查询:

SELECT `Reservation`.`id`
FROM `reservations` AS `Reservation`
LEFT JOIN rates ON Reservation.postal_code=rates.postal_code


这仅给出了“预订”表的结果,而没有“费率”表的结果,但是以下查询可以正常工作

SELECT `Reservation`.`id`, rates.id
FROM `reservations` AS `Reservation`, rates
WHERE Reservation.postal_code = rates.postal_code


我不确定我在做什么错,有人可以帮忙吗?

编辑

我正在使用cakephp,这只是cakephp生成的查询的修改版本,它没有在“选择”情况下指定字段,因此我认为这不是必需的。

最佳答案

您必须将它们包括在SELECT

SELECT `Reservation`.`id`, rates.*
FROM `reservations` AS `Reservation`
LEFT JOIN rates ON Reservation.postal_code=rates.postal_code


在第二个查询中,您将包含rates.id。

注意:不要使用您向我们显示的第二个查询中的联接类型。这是一个交叉联接(theta联接),将使查询的执行速度变慢。始终使用JOINS。

10-08 04:41