gpt4 book ai didi

mysql - SQL连接不同大小的表以及空值替换

转载 作者:行者123 更新时间:2023-11-29 04:36:32 25 4
gpt4 key购买 nike

我正在处理一个数据表的查询,但我似乎无法让它显示我想要的方式,我不知道这在 SQL 中是否可行我想做的是查询到最好用一个额外的 bool 类型列来响应。

目前我可以运行两个查询,它们都工作得很好,但我无法弄清楚如何将它们连接在一起,下面是我第一个查询的代码,它的作用是返回用户已经尝试过的啤酒这个工作正常并且符合预期并按预期返回。

SELECT * 
FROM keg.beer
JOIN keg.userbeer
ON beer.id = userbeer.beer_id
WHERE userbeer.username_id = 1;

第二个查询更简单,只是一个获取啤酒列表的选择。

SELECT * FROM keg.beer

我想做的是运行一个查询,并让它返回一个带有 bool 值的啤酒列表,无论用户是否尝试过。

最佳答案

您不会遇到太多无法使用普通 'ol SQL 生成的“所需结果”场景。在这种情况下,您将使用 CASE 语句来确定此人是否尝试过啤酒。您还需要一个 LEFT OUTER JOIN,这样您就不会删除来自 beer 的记录。过滤时的表 userid没有 userbeer记录beer :

 SELECT 
beer.name,
beer.id,
beer.country,
CASE WHEN userbeer.username_id IS NULL THEN 0 ELSE 1 END AS user_tried_beer_boolean
FROM keg.beer
LEFT OUTER JOIN keg.userbeer
ON beer.id = userbeer.beer_id
AND userbeer.username_id = 1;

正如@SeanLange 在此处的评论中提到的,对用户 ID 的 WHERE 语句的限制会导致在结果集中删除您想要的记录,因此我们移动了 username_id = 1 的限制。到 ON LEFT OUTER JOIN 的一部分这样 userbeer表结果仅限于 加入 beer 之前的那个用户表。

现在我需要喝一杯。

关于mysql - SQL连接不同大小的表以及空值替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40135000/

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