gpt4 book ai didi

MySQL GROUP_CONCAT 重复条目

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

我的 mysql 查询有问题,因为它返回分组属性的重复值。例如,对于属性 q_id 我收到 1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_ -_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_ -_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_1_-_ -_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_ -_-_1_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_ -_2_-_-_-_-_2_-_-_-_-_2 而不是预期的 1_-_-_-_-_2。有两件事令人困惑。

  1. 1 和 2 每重复 8 次。这可能是因为有 8 个不同的关键字出版物相关联。
  2. 1 和 2 重复出现 2 次。这是由于与该出版物相关的 2 位不同作者所致。

我的查询。

SELECT 
sm_publications.id AS p_id,
GROUP_CONCAT(sm_authors.last_name SEPARATOR '_-_-_-_-_') AS a_name,
GROUP_CONCAT(sm_affiliations.display_name SEPARATOR '_-_-_-_-_') AS af_display_name,
GROUP_CONCAT(sm_keywords.name SEPARATOR '_-_-_-_-_') AS k_name,
GROUP_CONCAT(sm_query_publications.query_id SEPARATOR '_-_-_-_-_') AS q_id
FROM sm_publications
INNER JOIN sm_publication_authors ON sm_publication_authors.publication_id = sm_publications.id
INNER JOIN sm_authors ON sm_authors.id = sm_publication_authors.author_id
LEFT JOIN sm_affiliations ON sm_affiliations.id = sm_authors.affiliation_id
LEFT JOIN sm_publication_keywords ON sm_publication_keywords.publication_id = sm_publications.id
LEFT JOIN sm_keywords ON sm_keywords.id = sm_publication_keywords.keyword_id
INNER JOIN sm_query_publications ON sm_query_publications.publication_id = sm_publications.id
WHERE sm_publications.id IN (1,2) /* Just as example */
GROUP BY sm_publications.id

这些关系可以在以下 ERM 中看到。 enter image description here

有几个特点。

  1. 一份出版物必须有作者,但关键字不是强制性的。
  2. 一位作者可以有一个隶属关系,但这不是强制性的。
  3. 一个发布必须引用一个或多个查询

问题:如何在不接收重复属性的情况下加入所有实体?我知道,有类似 GROUP_CONCAT(DISTINCT [...]) 的东西,但它会导致一个问题,如果有两个 authors 来自同一个 affiliation,我只得到一个affiliation。但在这种情况下,我希望同时接收两个从属关系,尽管它们是相同的。

<小时/>

示例输出如下所示。

[
{
"p_id": 1,
"a_name":
"Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Wang_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen_-_-_-_-_Chen",
"af_display_name": "North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_North China Electric Power University_-_-_-_-_Huazhong University of Science & Technology_-_-_-_-_Huazhong University of Science & Technology_-_-_-_-_Huazhong University of Science & Technology_-_-_-_-_Huazhong University of Science & Technology_-_-_-_-_Huazhong University of Science & Technology_-_-_-_-_Huazhong University of Scien",
"k_name": "Genetic Algorithm_-_-_-_-_High Efficiency_-_-_-_-_Improved Genetic Algorithm_-_-_-_-_Rule Extraction_-_-_-_-_Data Mining_-_-_-_-_Explicit Knowledge_-_-_-_-_Artificial Neural Network_-_-_-_-_Neural Network_-_-_-_-_Genetic Algorithm_-_-_-_-_High Efficiency_-_-_-_-_Improved Genetic Algorithm_-_-_-_-_Rule Extraction_-_-_-_-_Data Mining_-_-_-_-_Explicit Knowledge_-_-_-_-_Artificial Neural Network_-_-_-_-_Neural Network_-_-_-_-_Genetic Algorithm_-_-_-_-_High Efficiency_-_-_-_-_Improved Genetic Algorithm_-_-_-_-_Rule Extraction_-_-_-_-_Data Mining_-_-_-_-_Explicit Knowledge_-_-_-_-_Artificial Neural Network_-_-_-_-_Neural Network_-_-_-_-_Genetic Algorithm_-_-_-_-_High Efficiency_-_-_-_-_Improved Genetic Algorithm_-_-_-_-_Rule Extraction_-_-_-_-_Data Mining_-_-_-_-_Explicit Knowledge_-_-_-_-_Artificial Neural Network_-_-_-_-_Neural Network"
"q_id": "1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2"
},
{
"p_id": 2,
"a_name": "Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai_-_-_-_-_Mihai",
"af_display_name": "University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti_-_-_-_-_University of Pitesti",
"k_name": "Web Content Mining_-_-_-_-_Web Structure Mining_-_-_-_-_Web Mining_-_-_-_-_E Commerce_-_-_-_-_Data Preprocessing_-_-_-_-_Cause Related Marketing_-_-_-_-_Web Usage Mining_-_-_-_-_Data Mining_-_-_-_-_Web Content Mining_-_-_-_-_Web Structure Mining_-_-_-_-_Web Mining_-_-_-_-_E Commerce_-_-_-_-_Data Preprocessing_-_-_-_-_Cause Related Marketing_-_-_-_-_Web Usage Mining_-_-_-_-_Data Mining",
"q_id": "1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_1_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2_-_-_-_-_2"
}

]

最佳答案

如果您可以提供一些示例数据并且表格声明可以对其进行测试。

但是我认为您的问题是由于每个连接表上有多个记录,然后连接为您提供了每种可能的组合,从而导致 GROUP_CONCAT 数据中出现重复项。

加入子查询可能有效:-

SELECT 
sm_publications.id AS p_id,
author_inf.a_name,
affiliations_inf.af_display_name,
keyword_inf.k_name,
publications_inf.q_id
FROM sm_publications
INNER JOIN
(
SELECT sm_publication_authors.publication_id, GROUP_CONCAT(sm_authors.last_name SEPARATOR '_-_-_-_-_') AS a_name
FROM sm_publication_authors
INNER JOIN sm_authors ON sm_authors.id = sm_publication_authors.author_id
GROUP BY sm_publication_authors.publication_id
) author_inf
ON author_inf.publication_id = sm_publications.id
LEFT OUTER JOIN
(
SELECT sm_publication_authors.publication_id, GROUP_CONCAT(sm_affiliations.display_name SEPARATOR '_-_-_-_-_') AS af_display_name
FROM sm_publication_authors
INNER JOIN sm_authors ON sm_authors.id = sm_publication_authors.author_id
LEFT JOIN sm_affiliations ON sm_affiliations.id = sm_authors.affiliation_id
GROUP BY sm_affiliations.publication_id
) affiliations_inf
ON affiliations_inf.publication_id = sm_publications.id
LEFT OUTER JOIN
(
SELECT sm_publication_keywords.publication_id, GROUP_CONCAT(sm_keywords.name SEPARATOR '_-_-_-_-_') AS k_name
FROM sm_publication_keywords
LEFT JOIN sm_keywords ON sm_keywords.id = sm_publication_keywords.keyword_id
GROUP BY sm_publication_keywords.publication_id
) keyword_inf
ON keyword_inf.publication_id = sm_publications.id
INNER JOIN
(
SELECT sm_query_publications.publication_id, GROUP_CONCAT(sm_query_publications.query_id SEPARATOR '_-_-_-_-_') AS q_id
FROM sm_query_publications
GROUP BY sm_query_publications.publication_id
) publications_inf
ON publications_inf.publication_id = sm_publications.id
WHERE sm_publications.id IN (1,2) /* Just as example */

关于MySQL GROUP_CONCAT 重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21452199/

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