📄 distinct.test
字号:
# Test of LEFT() with distinct#CREATE table t1 ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 ;INSERT INTO t1 VALUES (1, 'aaaaa');INSERT INTO t1 VALUES (3, 'aaaaa');INSERT INTO t1 VALUES (2, 'eeeeeee');select distinct left(name,1) as name from t1;drop table t1; ## Test case from sel000100#CREATE TABLE t1 ( ID int(11) NOT NULL auto_increment, NAME varchar(75) DEFAULT '' NOT NULL, LINK_ID int(11) DEFAULT '0' NOT NULL, PRIMARY KEY (ID), KEY NAME (NAME), KEY LINK_ID (LINK_ID));INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0);INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (2,'Jack',0);INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (3,'Bill',0);CREATE TABLE t2 ( ID int(11) NOT NULL auto_increment, NAME varchar(150) DEFAULT '' NOT NULL, PRIMARY KEY (ID), KEY NAME (NAME));SELECT DISTINCT t2.id AS key_link_id, t2.name AS linkFROM t1LEFT JOIN t2 ON t1.link_id=t2.idGROUP BY t1.idORDER BY link;drop table t1,t2;## test case for #674#CREATE TABLE t1 ( html varchar(5) default NULL, rin int(11) default '0', rout int(11) default '0') ENGINE=MyISAM;INSERT INTO t1 VALUES ('1',1,0);SELECT DISTINCT html,SUM(rout)/(SUM(rin)+1) as 'prod' FROM t1 GROUP BY rin;drop table t1;## Test cases for #12625: DISTINCT for a list with constants#CREATE TABLE t1 (a int);INSERT INTO t1 VALUES (1),(2),(3),(4),(5);SELECT DISTINCT a, 1 FROM t1;SELECT DISTINCT 1, a FROM t1;CREATE TABLE t2 (a int, b int); INSERT INTO t2 VALUES (1,1),(2,2),(2,3),(2,4),(3,5);SELECT DISTINCT a, b, 2 FROM t2;SELECT DISTINCT 2, a, b FROM t2;SELECT DISTINCT a, 2, b FROM t2;DROP TABLE t1,t2;## Bug#16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" # error.#CREATE TABLE t1(a INT PRIMARY KEY, b INT);INSERT INTO t1 VALUES (1,1), (2,1), (3,1);EXPLAIN SELECT DISTINCT a FROM t1;EXPLAIN SELECT DISTINCT a,b FROM t1;EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2;EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2 WHERE t1_1.a = t1_2.a;EXPLAIN SELECT a FROM t1 GROUP BY a;EXPLAIN SELECT a,b FROM t1 GROUP BY a,b;EXPLAIN SELECT DISTINCT a,b FROM t1 GROUP BY a,b;CREATE TABLE t2(a INT, b INT NOT NULL, c INT NOT NULL, d INT, PRIMARY KEY (a,b));INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);EXPLAIN SELECT DISTINCT a FROM t2;EXPLAIN SELECT DISTINCT a,a FROM t2;EXPLAIN SELECT DISTINCT b,a FROM t2;EXPLAIN SELECT DISTINCT a,c FROM t2;EXPLAIN SELECT DISTINCT c,a,b FROM t2;EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;CREATE UNIQUE INDEX c_b_unq ON t2 (c,b);EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;DROP TABLE t1,t2;# Bug 9784 DISTINCT IFNULL truncates data#create table t1 (id int, dsc varchar(50));insert into t1 values (1, "line number one"), (2, "line number two"), (3, "line number three");select distinct id, IFNULL(dsc, '-') from t1;drop table t1;## Bug 21456: SELECT DISTINCT(x) produces incorrect results when using order by#CREATE TABLE t1 (a int primary key, b int);INSERT INTO t1 (a,b) values (1,1), (2,3), (3,2);explain SELECT DISTINCT a, b FROM t1 ORDER BY b;SELECT DISTINCT a, b FROM t1 ORDER BY b;DROP TABLE t1;# End of 4.1 tests## Bug #15745 ( COUNT(DISTINCT CONCAT(x,y)) returns wrong result)#CREATE TABLE t1 ( ID int(11) NOT NULL auto_increment, x varchar(20) default NULL, y decimal(10,0) default NULL, PRIMARY KEY (ID), KEY (y)) ENGINE=MyISAM DEFAULT CHARSET=latin1;INSERT INTO t1 VALUES(1,'ba','-1'),(2,'ba','1150'),(306,'ba','-1'),(307,'ba','1150'),(611,'ba','-1'),(612,'ba','1150');select count(distinct x,y) from t1;select count(distinct concat(x,y)) from t1;drop table t1;## Bug #18068: SELECT DISTINCT#CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b));INSERT INTO t1 VALUES (1, 101);INSERT INTO t1 SELECT a + 1, a + 101 FROM t1;INSERT INTO t1 SELECT a + 2, a + 102 FROM t1;INSERT INTO t1 SELECT a + 4, a + 104 FROM t1;INSERT INTO t1 SELECT a + 8, a + 108 FROM t1;EXPLAIN SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;DROP TABLE t1;# The test case for bug#20836 should be re-enabled when bug#16861 is resolved# The results for the test should be the same as in 4.1.##Bug #20836: Selecting into variables results in wrong results being returned##--disable_warnings#DROP TABLE IF EXISTS t1;#--enable_warnings##CREATE TABLE t1 (id INT NOT NULL, fruit_id INT NOT NULL, fruit_name varchar(20)#default NULL);##INSERT INTO t1 VALUES (1,1,'ORANGE');#INSERT INTO t1 VALUES (2,2,'APPLE');#INSERT INTO t1 VALUES (3,2,'APPLE');#INSERT INTO t1 VALUES (4,3,'PEAR');##SELECT DISTINCT fruit_id, fruit_name INTO @v1, @v2 FROM t1 WHERE fruit_name = #'APPLE';#SELECT @v1, @v2;##SELECT DISTINCT fruit_id, fruit_name INTO @v3, @v4 FROM t1 GROUP BY fruit_id, #fruit_name HAVING fruit_name = 'APPLE';#SELECT @v3, @v4;##SELECT DISTINCT @v5:= fruit_id, @v6:= fruit_name INTO @v7, @v8 FROM t1 WHERE #fruit_name = 'APPLE';#SELECT @v5, @v6, @v7, @v8;##SELECT DISTINCT @v5 + fruit_id, CONCAT(@v6, fruit_name) INTO @v9, @v10 FROM t1 #WHERE fruit_name = 'APPLE';#SELECT @v5, @v6, @v7, @v8, @v9, @v10;##SELECT DISTINCT @v11:= @v5 + fruit_id, @v12:= CONCAT(@v6, fruit_name) INTO #@v13, @v14 FROM t1 WHERE fruit_name = 'APPLE';#SELECT @v11, @v12, @v13, @v14;##SELECT DISTINCT @v13, @v14 INTO @v15, @v16 FROM t1 WHERE fruit_name = 'APPLE';#SELECT @v15, @v16;##SELECT DISTINCT 2 + 2, 'Bob' INTO @v17, @v18 FROM t1 WHERE fruit_name = #'APPLE';#SELECT @v17, @v18;##--disable_warnings#DROP TABLE IF EXISTS t2;#--enable_warnings##CREATE TABLE t2 (fruit_id INT NOT NULL, fruit_name varchar(20)#default NULL);##SELECT DISTINCT fruit_id, fruit_name INTO OUTFILE #'../tmp/data1.tmp' FROM t1 WHERE fruit_name = 'APPLE';#LOAD DATA INFILE '../tmp/data1.tmp' INTO TABLE t2;#--exec rm $MYSQL_TEST_DIR/var/tmp/data1.tmp##SELECT DISTINCT @v19:= fruit_id, @v20:= fruit_name INTO OUTFILE #'../tmp/data2.tmp' FROM t1 WHERE fruit_name = 'APPLE';#LOAD DATA INFILE '../tmp/data2.tmp' INTO TABLE t2;#--exec rm $MYSQL_TEST_DIR/var/tmp/data2.tmp##SELECT @v19, @v20;#SELECT * FROM t2;##DROP TABLE t1;#DROP TABLE t2;## Bug #15881: cast problems#CREATE TABLE t1 (a CHAR(1)); INSERT INTO t1 VALUES('A'), (0);SELECT a FROM t1 WHERE a=0;SELECT DISTINCT a FROM t1 WHERE a=0;DROP TABLE t1;CREATE TABLE t1 (a DATE);INSERT INTO t1 VALUES ('1972-07-29'), ('1972-02-06');EXPLAIN SELECT (SELECT DISTINCT a FROM t1 WHERE a = '2002-08-03');EXPLAIN SELECT (SELECT DISTINCT ADDDATE(a,1) FROM t1 WHERE ADDDATE(a,1) = '2002-08-03');CREATE TABLE t2 (a CHAR(5) CHARACTER SET latin1 COLLATE latin1_general_ci);INSERT INTO t2 VALUES (0xf6);INSERT INTO t2 VALUES ('oe');SELECT COUNT(*) FROM (SELECT DISTINCT a FROM t2) dt;SELECT COUNT(*) FROM (SELECT DISTINCT a FROM t2 WHERE a='oe' COLLATE latin1_german2_ci) dt;DROP TABLE t1, t2;## Bug #25551: inconsistent behaviour in grouping NULL, depending on index type#CREATE TABLE t1 (a INT, UNIQUE (a));INSERT INTO t1 VALUES (4),(null),(2),(1),(null),(3);EXPLAIN SELECT DISTINCT a FROM t1;#result must have one row with NULLSELECT DISTINCT a FROM t1;EXPLAIN SELECT a FROM t1 GROUP BY a;#result must have one row with NULLSELECT a FROM t1 GROUP BY a;DROP TABLE t1;##Bug #27659: SELECT DISTINCT returns incorrect result set when field is#repeated##CREATE TABLE t1 (a INT, b INT);INSERT INTO t1 VALUES(1,1),(1,2),(1,3);SELECT DISTINCT a, b FROM t1;SELECT DISTINCT a, a, b FROM t1;DROP TABLE t1;--echo End of 5.0 tests
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -