MySql内部连接来自两个表,缺少一些行
我对查询和sql脚本的整个逻辑有问题 我的数据库有两个表。第一个“旅行”表有许多独特的旅行,有许多列。第二个表“like”是每次旅行存在的like以及旅行所属国家的名称 现在我想MySql内部连接来自两个表,缺少一些行,mysql,sql,inner-join,Mysql,Sql,Inner Join,我对查询和sql脚本的整个逻辑有问题 我的数据库有两个表。第一个“旅行”表有许多独特的旅行,有许多列。第二个表“like”是每次旅行存在的like以及旅行所属国家的名称 现在我想选择*from trips order by likes where the country=“希腊”。 首先,我编写以下代码 SELECT T.* FROM trips T INNER JOIN tripslikes L ON T.trip_id = L.trip_id Where T.countr
选择*from trips order by likes where the country=“希腊”。
首先,我编写以下代码
SELECT T.*
FROM trips T INNER JOIN
tripslikes L
ON T.trip_id = L.trip_id
Where T.country_name = "Greece";
结果是所有旅行中,国家=“希腊”重复的次数与这次旅行中重复的次数相同
问题是我失去了我的成绩,那些旅行直到现在都没有。这是因为T.trip\u id=L.trip\u id上的
如果trips表中的列中没有国家,则要查找到希腊的所有行程,必须将此表链接到另一个表。
如果只有tripslikes一张表有国家栏,那么我恐怕无法找到所有希腊之行,因为那里没有类似的旅行。
请尝试查找是否有任何方法可以将旅行链接到tripslikes表以外的国家。如果您想与喜欢的人一起前往希腊,可以使用EXISTS
:
SELECT T.*
FROM trips T
WHERE T.country_name = 'Greece' AND
EXISTS (SELECT 1
FROM tripslikes L
WHERE T.trip_id = L.trip_id
);
SELECT T.*
FROM trips T
WHERE T.country_name = 'Greece' AND
NOT EXISTS (SELECT 1
FROM tripslikes L
WHERE T.trip_id = L.trip_id
);
这将删除重复项。如果您想要没有喜好的旅行,请切换到不存在
:
SELECT T.*
FROM trips T
WHERE T.country_name = 'Greece' AND
EXISTS (SELECT 1
FROM tripslikes L
WHERE T.trip_id = L.trip_id
);
SELECT T.*
FROM trips T
WHERE T.country_name = 'Greece' AND
NOT EXISTS (SELECT 1
FROM tripslikes L
WHERE T.trip_id = L.trip_id
);
尝试用LEFT JOIN替换INNER JOIN LEFT JOIN不仅会返回希腊,还会返回所有国家的所有行程。非常感谢!我正在使用此代码-->(请参阅问题的更新1),我得到的是3行而不是4行,这是我的问题。。如何获取总计为0的第四行。你知道吗?^τρρ^λλκη。我想这回答了你原来的问题。如果您有不同的问题,请提供示例数据、所需结果以及所需逻辑的清晰解释。