gpt4 book ai didi

sql - 初级 - PostgresQL : I have 2 tables and I'm trying to return a list that has matching names

转载 作者:行者123 更新时间:2023-11-29 13:19:00 25 4
gpt4 key购买 nike

场景:我有 2 个表 - TableA 和 TableB。每个表都有一个存储电影标题列表的列。这两列未标记为相同的 column_name,因此您不能将它们作为 column_name 加入(例如,它们被标记为 - TableA.movi​​e_titles、TableB.titles_movie - 均包含电影标题)。但是,这些表共享 1 列,您可以在该列上存储电影标题的 ID 并标记为 movie_id(因此有一个 TableA.movi​​e_id,您可以将其加入 TableB.movi​​e_id)。

我的目标是查看/返回出现在这两个列中的电影标题列表(例如,“海底总动员”同时列在 TableA.movi​​e_title 和 TableB.title_movie 中) .我假设我需要加入这两个表,以便我可以创建这个列表。我也受到限制,因为我只能在它们共享的第 1 列(标记为 movie_id)上加入每个表。

我有:

 SELECT TableA.movie_titles, TableB.titles_movie
FROM TableA
JOIN TableB ON TableA.movie_id = TableB.movie_id
WHERE EXISTS(SELECT TableA.movie_titles, TableB.titles_movie
FROM TableB
WHERE TableA.movie_id = TableB.movie_id
AND TableB.titles_movie <> TableA.movie_title)

当我运行此查询时,表 A 将显示重复的电影标题,而表 B 则没有重复的电影。这不是我要找的。

我的查询基于 of this question ,但我不确定我是否针对我的场景使用了正确的查询。

我是否应该使用某种形式的真/假陈述来帮助我匹配电影片名?我应该在这里做什么?

最佳答案

您可以使用这样的简单查询:

SELECT TableA.movie_titles, TableB.titles_movie
FROM TableA
JOIN TableB ON TableB.titles_movie = TableA.movie_title

这将给出出现在两个表中的所有电影。这使用完全匹配,因此两个表中的电影标题必须相同,包括空格、字符和大小写。

如果你想忽略大小写,你可以使用LOWER()函数:

SELECT TableA.movie_titles, TableB.titles_movie
FROM TableA
JOIN TableB ON LOWER(TableB.titles_movie) = LOWER(TableA.movie_title)

但此查询不会在这两列上使用任何现有索引,除非索引是使用 LOWER() 构建的。

关于sql - 初级 - PostgresQL : I have 2 tables and I'm trying to return a list that has matching names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45002986/

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