gpt4 book ai didi

sql - 使用纯 SQL 来匹配表中的行对?

转载 作者:行者123 更新时间:2023-12-02 06:38:50 26 4
gpt4 key购买 nike

注意:这个问题对“学位”的概念有歧义。我已经得到了答案。

这些天我一直在为以下问题苦苦挣扎:您不能使用某种编程语言编写函数;仅使用原始 SQL。

给定一个表 articles其中包含 2 列:article_idtag_name

article_id  |  tag_name
---------------------------
1 C++
1 java
1 python
2 ruby
2 js
3 ruby
4 java
4 python

和一个名为“tag_relations”的空表,其结构如下:

tag1     |   tag2    |  degree
-----------------------------------

现在,问题来了:

  • 根据第一个表的内容编写“RAW SQL”将值写入表“tag_relations”。

对于给定的数据,输出应该是这样的(我不确定度数是多少,问题也没有提到这一点,所以 Gordon Linoff 和 Jonathan Leffler 的答案对我来说都是正确的。) :

tag1     |   tag2    |  degree
-----------------------------------
java C++ 2
java python 4
ruby js 2

更新的附加信息

注意 1. 这里的问题没有描述“学位”。但是我认为这是衡量两个标签之间关系的一种方法。因为有 'java' 和 'C++' 的值:

article_id  |  tag_name
---------------------------
1 C++
1 java

所以度数 = 2

对于“java”和“python”

article_id  |  tag_name
---------------------------
1 java
1 python
4 java
4 python

所以度数 = 4

注2:
没有关于学位的记录:'python' 和 'C++',(我的意思是这个问题不涉及 degree < 2 的情况)(编辑注:此评论与包含 C++ 和 Java 的内容不一致输出。)

这道题考了一天,复习了SQL知识,还是不知道怎么存变量,怎么循环记录。

任何想法将不胜感激!

最佳答案

什么是学位?它似乎是连接两件事的最大文章 ID。

此查询需要自连接(和插入):

insert into tag_relations(tag1, tag2, degree)
select a1.tag_name, a2.tag_name, max(article_id) as maxid
from articles a1 join
articles a2
on a1.article_id = a2.article_id and
a1.tag_name < a2.tag_name
group by a1.tag_name, a2.tag_name

自连接查找具有相同 article_id 的所有项目对。 “<”只是确保颠倒顺序不会创建新的对。对于任何一对,最大的 article_id 作为新的程度。

关于sql - 使用纯 SQL 来匹配表中的行对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168751/

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