A B C
1 1 1
1 1 1
2 2 2
2 2 2
3 3 3
3 3 3
4 4 4
4 4 4
5 5 5
5 5 5
5 5 5
6 6 6
6 6 6
我只输出不同的行而不使用group by语句。我不能使用group by因为它使mysql挂起。所以它应该返回
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
我正在使用DISTINCT进行内部联接。这也不起作用:
SELECT DISTINCT * FROM TABLEA inner join TABLEB on TABLEA.A = TABLEB.A
答案 0 :(得分:13)
SELECT DISTINCT A,B,C FROM TABLE;
根据mysql文档,DISTINCT指定从结果集中删除重复的行(http://dev.mysql.com/doc/refman/5.0/en/select.html)
我在jsfiddle上创建了一个示例,它可以运行恕我直言
create table tablea (A int,B int,C int);
create table tableb (A int);
INSERT INTO tablea VALUES (1,1,1),(1,1,1),(2,2,2),(2,2,2),(3,3,3),(3,3,3),(4,4,4),(4,4,4),(5,5,5),(5,5,5),(5,5,5),(6,6,6),(6,6,6);
INSERT INTO tableb VALUES (1),(1),(1),(1),(1);
SELECT DISTINCT tablea.A,tablea.B,tablea.C FROM tablea INNER JOIN tableb ON tablea.A=tableb.A;
随时可以对此SQLFiddle进行试验。
答案 1 :(得分:9)
This may totally shock you but MySQL uses GROUP BY under the hood to execute DISTINCT !!!
以下是您可能想要尝试的内容
如果表格被称为mytable
,请执行以下两项操作:
首先运行
ALTER TABLE mytable ADD INDEX ABC (A,B,C);`
其次,运行此查询
SELECT A,B,C FROM mytable GROUP BY A,B,C;
以下是证明其有效的示例代码
mysql> drop database if exists cool_cs;
Query OK, 1 row affected (0.04 sec)
mysql> create database cool_cs;
Query OK, 1 row affected (0.00 sec)
mysql> use cool_cs
Database changed
mysql> create table mytable
-> (A int,B int,C int, key ABC (A,B,C));
Query OK, 0 rows affected (0.08 sec)
mysql> INSERt INTO mytable VALUES
-> (1,1,1),(1,1,1),(2,2,2),(2,2,2),(3,3,3),
-> (3,3,3),(4,4,4),(4,4,4),(5,5,5),(5,5,5),
-> (5,5,5),(6,6,6),(6,6,6);
Query OK, 13 rows affected (0.06 sec)
Records: 13 Duplicates: 0 Warnings: 0
mysql> select a,b,c FROM mytable group by a,b,c;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
| 6 | 6 | 6 |
+------+------+------+
6 rows in set (0.02 sec)
mysql>
试一试!!!
答案 2 :(得分:2)
如果您(或其他任何人)真的想要在不使用DISTINCT或GROUP BY语句的情况下获得不同的重新分析,这可能是这样的:
SELECT
a.name
FROM person a
LEFT JOIN person b
ON (a.name = b.name OR (a.name IS NULL AND b.name IS NULL))
AND a.id < b.id
WHERE b.id IS NULL
但这是一件古怪的事情。
答案 3 :(得分:1)
DISTINCT关键字可以满足您的需求。即,如果你的表名是A,select distinct * from A
就可以了。
比照。 mysql手册:http://dev.mysql.com/doc/refman/5.0/en/select.html