gpt4 book ai didi

mysql - Sql 连接查询 - 如果不在连接查询中则设置默认值

转载 作者:行者123 更新时间:2023-11-29 01:26:06 24 4
gpt4 key购买 nike

我有一个 SQL 查询,它链接 2 个表以提供数据(如果两个表中都有马):

SELECT ProformSystem.TheDate as racedate, 
ProformSystem.Course as course,
ProformSystem.TheTime as thetime,
ProformSystem.Horse as horse,
ATRSpeedRatings.rank as rank
FROM ATRSpeedRatings
INNER JOIN ProformSystem ON (ATRSpeedRatings.Horse = trim(ProformSystem.Horse)) AND (ATRSpeedRatings.TheDate = ProformSystem.TheDate) order by ProformSystem.TheTime;"

如果ProformSystem.Horse中的马不在ATRSpeedRatings.Horse中,那么我是否有可能将rank = 0作为默认值,或者我需要运行单独的查询吗?

这样我就可以显示来自 ProformSystem 的所有马匹,即使它们在 ATRSpeedRatings 中没有排名。

最佳答案

我认为你想要一个左连接coalesce():

SELECT ps.TheDate as racedate, ps.Course as course, ps.TheTime as thetime,
ps.Horse as horse, COALESCE(sr.rank, 0) as rank
FROM ProformSystem ps LEFT JOIN
ATRSpeedRatings sr
ON sr.Horse = TRIM(ps.Horse) AND sr.TheDate = ps.TheDate)
ORDER BY ps.TheTime;

请注意,此查询使用表别名。这些使得查询更容易编写和阅读。

此外,JOIN 条件sr.Horse = trim(ps.Horse) 非常可疑。您应该修复数据,以便 ProformSystem 中没有空格。修复数据会更有效,并且可以防止将来查询时出现问题。

关于mysql - Sql 连接查询 - 如果不在连接查询中则设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51556875/

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