两列中的差异值

时间:2012-04-20 01:46:06

标签: mysql

我在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

2 个答案:

答案 0 :(得分:2)

你几乎就在那里 - 你也需要将最后一栏分组。我可以猜测一下使用情况,所以我添加了一个有序的question_type摘要,可能对搜索或输出很方便:

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'

答案 1 :(得分: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 select冲突。