gpt4 book ai didi

mysql - SQL Join 2 tables 即使没有匹配的数据

转载 作者:可可西里 更新时间:2023-11-01 08:38:47 26 4
gpt4 key购买 nike

我正在努力连接我的表的内容,我正在尝试连接两个表,同时仍然从表“电影”中获取结果,即使表“users_ratings”中没有匹配的记录。但它似乎不起作用我只得到一个结果。

--电影表(100条记录)

CREATE TABLE IF NOT EXISTS `movies` (
`ID` int(20) NOT NULL,
`title_name` vachar(255) NOT NULL,
`creation_date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--评分表(1条记录)

CREATE TABLE IF NOT EXISTS `users_ratings` (
`ID` int(20) NOT NULL,
`user_id` bigint(20) NOT NULL,
`type_id` bigint(20) NOT NULL,
`type_name` vachar(255) NOT NULL,
`score` int(11) NOT NULL,
`creation_date` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--我的查询

SELECT name_table.*, ur.type_id, count(ur.type_id) vote_count
FROM `movies` name_table
left JOIN users_ratings ur ON name_table.id = ur.type_id
WHERE ur.type_name= 'movies'
GROUP BY ur.type_id
Order BY vote_count DESC

--查询结果

ID    title_name  creation_date        type_id  vote_count
1 Avatar 2014-05-20 00:00:00 1 1

--Results I'm trying to get (Should I get 100 records)

ID    title_name      creation_date        type_id  vote_count
1 Avatar 2014-05-20 00:00:00 1 1
2 Avengers 2014-05-20 00:00:00 NULL NULL
3 Ant-Man 2014-05-20 00:00:00 NULL NULL
4 Jurassic World 2014-05-20 00:00:00 NULL NULL
5 Rampage 2014-05-20 00:00:00 NULL NULL
6 Black Panther 2014-05-20 00:00:00 NULL NULL
7 Tombe Raider 2014-05-20 00:00:00 NULL NULL
8 Deadpool 2014-05-20 00:00:00 NULL NULL
9 Pacific Rim 2014-05-20 00:00:00 NULL NULL

最佳答案

因为您已经放置了 ur.type_name = movies 的显式 Where 条件,所以它会在 Left join 之后过滤掉结果。您需要将 Where 条件转换为 LEFT JOIN ON 匹配。

请尝试以下操作:

SELECT name_table.*, ur.type_id, count(ur.type_id) vote_count
FROM `movies` name_table
left JOIN users_ratings ur ON name_table.id = ur.type_id
AND ur.type_name= 'movies'
GROUP BY name_table.id
Order BY vote_count DESC

注意: As pointed out by @Strawberry ,您应该避免使用基于通配符 (*) 的 Select;并仅获取您的应用程序代码所需的特定列。

此外,您可以阅读 Why is SELECT * considered harmful?

关于mysql - SQL Join 2 tables 即使没有匹配的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com