【发布时间】:2021-02-18 11:04:40
【问题描述】:
我对查询和 sql 脚本的整个逻辑有疑问。
我的数据库有 2 个表。第一个“旅行”表有很多独特的旅行,有很多列。第二个表“赞”是每次旅行存在的赞以及该旅行所属国家/地区的名称
现在我想select * from trips order by likes where the country = "Greece".
首先我编写以下代码
SELECT T.*
FROM trips T INNER JOIN
tripslikes L
ON T.trip_id = L.trip_id
Where T.country_name = "Greece";
结果是 country = "Greece" 重复次数与此行程中获得的赞一样多的所有旅行。
问题是我的结果失去了迄今为止没有任何类似的旅行。这是因为ON T.trip_id = L.trip_id
知道如何在表上没有任何记录的情况下获得喜欢的旅行(意思是到目前为止没有任何喜欢记录的旅行)?
更新1
select *, count(*) Total
from
(
SELECT T.*
FROM trips T
INNER JOIN tripslikes L
ON T.trip_id = L.trip_id Where T.country_name = "Greece"
) d
group by trip_id;
非常感谢!
【问题讨论】:
-
尝试将 INNER JOIN 替换为 LEFT JOIN
-
Left Join 不仅会返回前往希腊的旅行,还会返回来自所有国家/地区的所有旅行。
标签: mysql sql inner-join