查看: 1332| 回复: 8
跳转到指定楼层
上一主题 下一主题
收起左侧

地里有熟悉MySQL的大佬吗

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
被一道mySQL的题折磨一晚上快要emo了,周围实在没什么可以请教的人,不知道能来地里答疑吗QwQ。如果不可以我光速请求删帖。或者求大佬们指路除了stack overflow 还有哪里可以答疑吗。

是一道hackerrank上的题(题目就叫Challenge)需要嵌套循环加having条件。标准答案是select counter(hacker_id) as ct from Challenge group by hacker_id having ct in (…)
但是如果不起别名,select counter(hacker_id) from Challenge group by hacker_id having count(hacker_id) in (…) 就不可以!

而且更费解的是,如果in 后面不是嵌套的select语句,而是一个列表的话,例如in (1,2,3,4),不起别名网站也不会报语法错误。但是一旦in 后面变成了select语句就会报错。有大佬知道是怎么回事吗?
更多图片 小图 大图
组图打开中,请稍候......

上一篇:礼貌问一下有同学想一起拼data masked 的全套课程吗?
下一篇:急求SQL大神帮忙!有偿!有偿!有偿!
全局:
请问有报错的显示吗,报错是咋说呢?

评分

参与人数 1大米 +1 收起 理由
spilt-over + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
 楼主| 阿黄1736 2022-7-31 15:26:00 来自APP | 只看该作者
全局:
brothe 发表于 2022-07-31 00:17:41
请问有报错的显示吗,报错是咋说呢?
啊感谢大佬打破零回复!
网站报错就是说no stdout,所以我用(1,2,3,4)debug的时候找了很久。如果网站无法locate错误信息在哪,就会只报no stdout(比如如果语法正确但是查询的ID不存在)
回复

使用道具 举报

🔗
brothe 2022-7-31 15:29:14 来自APP | 只看该作者
全局:
我刚刚去你说的这个网站敲了一遍你的代码。然后你给的这个dummy这个答案其实也是test case fail的。我把我改的一个答案给你看看,这个的运行结果跟dummy的那个答案一样。
我觉得问题就出在,原表给了你的叫challenges 对吧,你在用的时候,就需要给它取个别名,你dummy能跑通的原因是因为你specific 了哪个表,如果没有别名,程序就不知道你指的是题目给的challenges 的表,还是count了id 的表。

1CB6629E-2002-4868-9E2B-4793EB402B04.jpg (139.34 KB, 下载次数: 5)

1CB6629E-2002-4868-9E2B-4793EB402B04.jpg
回复

使用道具 举报

🔗
brothe 2022-7-31 15:30:51 来自APP | 只看该作者
全局:
就是你第一行select并且给它取名叫dummy 的时候,其实就是可以想象成建立了一个新表,这个新表的名字和题目给的input 的表的名字一样的话,就不行了。
回复

使用道具 举报

🔗
brothe 2022-7-31 15:31:36 来自APP | 只看该作者
全局:
我不知道我理解的错误点对不对,好久不写mysql了,后面有大佬还求轻喷啊

评分

参与人数 1大米 +1 收起 理由
OacNayr809 + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
 楼主| 阿黄1736 2022-7-31 15:37:12 来自APP | 只看该作者
全局:
brothe 发表于 2022-07-31 00:30:51
就是你第一行select并且给它取名叫dummy 的时候,其实就是可以想象成建立了一个新表,这个新表的名字和题目给的input 的表的名字一样的话,就不行了。
啊所以意思是 因为嵌套循环两层表里都有hacker_id,所以保险起见最好起别名 说清楚count是哪个表的hacker_id 是这样吗?
回复

使用道具 举报

🔗
brothe 2022-7-31 15:54:13 来自APP | 只看该作者
全局:
阿黄1736 发表于 2022-07-31 00:37:12
啊所以意思是 因为嵌套循环两层表里都有hacker_id,所以保险起见最好起别名 说清楚count是哪个表的hacker_id 是这样吗?
我觉得不是嵌套表都有hackerid 的原因,而是题目的challenge 表和你select并count形成的表都有hackerid 的原因吧。具体你可以敲一个没有嵌套的类似的表看看有没有报错。. check 1point3acres for more.
实在不行就记住好了,以后碰到类似的不管三七二十一全部都指明是具体哪个表的具体哪一列。
回复

使用道具 举报

🔗
 楼主| 阿黄1736 2022-8-1 02:22:42 来自APP | 只看该作者
全局:
brothe 发表于 2022-07-31 00:54:13
我觉得不是嵌套表都有hackerid 的原因,而是题目的challenge 表和你select并count形成的表都有hackerid 的原因吧。具体你可以敲一个没有嵌套的类似的表看看有没有报错。
i see! 感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表