Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql内部连接来自两个表,缺少一些行_Mysql_Sql_Inner Join - Fatal编程技术网

MySql内部连接来自两个表,缺少一些行

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

我对查询和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.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的第四行。你知道吗?^τρρ^λλκη。我想这回答了你原来的问题。如果您有不同的问题,请提供示例数据、所需结果以及所需逻辑的清晰解释。