1

我在mysql中有一个查询

select f1,f2,f3 from tableName;

我只想删除字段 f1 和 f2 中的重复值,

我累了如下

select f1,f2,f3 from tableName
group by f1,f2;

但它只会删除 f1 中的重复项。任何机构都可以建议我如何删除 f1 和 f2 中的重复项。

topic_id    topic_name                    question_type
2237    Understanding Diversity           Comprehensive
2237    Understanding Diversity           Easy
2237    Understanding Diversity           Application
44315   Bhasha, boli, lipi, or Vayakaran  Intermediate

以上是仅在 question_type 列中具有不同值的示例输出,我想从 question_type 和 topic_id 中删除重复项

预期输出:同时具有 topic_id 和 question_type 不同的值

 44315  Bhasha, boli, lipi, or Vayakaran  Intermediate
 2237   Understanding Diversity           Comprehensive
4

2 回答 2

2

您快到了 - 您还需要对最后一列进行分组。我只能猜到用法,所以我添加了一个对被覆盖question_type的 s 进行排序的摘要,这对于搜索或输出可能很方便:

SELECT
  topic_id,
  topic_name,
  GROUP_CONCAT(DISTINCT question_type ORDER BY question_type) AS question_types
FROM tableName
GROUP BY topic_id, topic_name;

输出是:

'2237', 'Understanding Diversity', 'Application,Comprehensive,Easy'
'44315', 'Bhasha, boli, lipi, or Vayakaran', 'Itermediate'
于 2012-04-20T02:14:57.107 回答
0

我的 SQL 确实不是那么好,但我认为您需要执行所谓的嵌套 SELECT 语句。

这是手册参考。

http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

这将使 SQL 看起来像这样。

SELECT f1,f2,f3 FROM (SELECT f1,f2,f3 FROM tableName AS table1 GROUP BY f1) AS table2 GROUP BY f2;

请注意,我必须使用 AS 来创建别名,否则“tableName”会与父 SQL 选择冲突。

于 2012-04-20T02:09:37.657 回答