Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中选择不同的2列组合_Mysql_Sql_Database_Distinct_Distinct Values - Fatal编程技术网

在mysql中选择不同的2列组合

在mysql中选择不同的2列组合,mysql,sql,database,distinct,distinct-values,Mysql,Sql,Database,Distinct,Distinct Values,我有一个mysql表,如下所示: 1 value1 value2 3534 2 value1 value1 8456 3 value1 value2 3566 4 value1 value3 7345 5 value2 value3 6734 1 value1 value2 3534 2 value1 value1 8456 4 value1 value3 7345

我有一个mysql表,如下所示:

1   value1    value2    3534
2   value1    value1    8456
3   value1    value2    3566
4   value1    value3    7345
5   value2    value3    6734
1   value1    value2    3534
2   value1    value1    8456
4   value1    value3    7345
5   value2    value3    6734
我需要一个查询来选择具有不同列2和3的所有行,例如,我希望本例的输出如下所示:

1   value1    value2    3534
2   value1    value1    8456
3   value1    value2    3566
4   value1    value3    7345
5   value2    value3    6734
1   value1    value2    3534
2   value1    value1    8456
4   value1    value3    7345
5   value2    value3    6734

我找到了一些关于如何执行此操作的示例,但它们都在每个列上分别选择了distinct。

假设第一列是唯一的,您可以执行以下操作:

SELECT id, col2, col3, col4
FROM yourtable
WHERE id IN
(
    SELECT MIN(id)
    FROM yourtable
    GROUP BY col2, col3
)

在线查看:假设表中的列是
(id,col1,col2,col3)
,您可以:

SELECT  *
FROM    YourTable yt
JOIN    (
        SELECT  MIN(id) as minid
        FROM    YourTable
        GROUP BY
                col1, col2
        ) filter
ON      filter.minid = yt.id

此查询确保column1和column2的组合是唯一的,同时选择第三列的最小值

SELECT col1, col2, MIN(col3)
FROM yourTable
GROUP BY col1, col2

最简单的查询是

SELECT col1, col2, MIN(col3)
FROM myTable
GROUP BY col1, col2
更新1 你最好用这个来对付上面

SELECT id, col2, col3, col4
FROM yourtable
GROUP BY col2, col3;
我之所以这么说,是因为使用CONCAT,我在中没有得到想要的结果。第一个查询返回5行,而CONCAT返回4行,这是不正确的

希望你明白我的意思


假设表中的列是(id、col2、col3、col4)


使用GROUPBY方法会返回额外的行,其中as会显式检查每个字段,尽管不再返回与count相同的记录数(Distinct..)

SELECT id, col2, col3, col4
FROM yourtable yt
WHERE id =
(
 SELECT MIN(id)
 FROM yourtable yt1
 WHERE yt.col2 = yt1.col2
 AND yt.col3 = yt1.col3
)