| Bug #31825 | GROUP BY problem | ||
|---|---|---|---|
| Submitted: | 24 Oct 2007 20:35 | Modified: | 25 Oct 2007 17:13 |
| Reporter: | Ken DV | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: General | Severity: | S2 (Serious) |
| Version: | 5.0.41 | OS: | Windows (Not tested on other OS'es) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | GROUP, SELECT | ||
[24 Oct 2007 22:43]
MySQL Verification Team
Thank you for the bug report. Could you please provide the complete test case: create table; insert data; offended query; expected result and wrong result presented. Thanks in advance.
[25 Oct 2007 8:51]
Ken DV
CREATE DATABASE `test` ; CREATE TABLE `keywords` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , `keyword` VARCHAR( 20 ) NOT NULL ) ENGINE = MYISAM ; INSERT INTO `test`.`keywords` (`id`, `keyword`) VALUES (NULL, 'test'); INSERT INTO `test`.`keywords` (`id`, `keyword`) VALUES (NULL, 'test2'); Offending query: SELECT * FROM keywords AS kw WHERE keyword = 'test' AND keyword NOT IN ( SELECT keyword FROM keywords WHERE keyword = kw.keyword ) GROUP BY kw.keyword LIMIT 0 , 30 Expected results: 0 rows Actual results: 1 row
[25 Oct 2007 17:13]
MySQL Verification Team
Thank you for the bug report. I could not repeat with latest release,
please upgrade:
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> use test;
Database changed
mysql> CREATE TABLE `keywords` (
-> `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
-> `keyword` VARCHAR( 20 ) NOT NULL
-> ) ENGINE = MYISAM ;
Query OK, 0 rows affected (0.23 sec)
mysql> INSERT INTO `test`.`keywords` (`id`, `keyword`) VALUES (NULL, 'test');
Query OK, 1 row affected (0.08 sec)
mysql> INSERT INTO `test`.`keywords` (`id`, `keyword`) VALUES (NULL, 'test2');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT *
-> FROM keywords AS kw
-> WHERE keyword = 'test'
-> AND keyword NOT
-> IN (
->
-> SELECT keyword
-> FROM keywords
-> WHERE keyword = kw.keyword
-> )
-> GROUP BY kw.keyword
-> LIMIT 0 , 30;
Empty set (0.13 sec)
mysql>

Description: When executing a query such as this: SELECT * FROM keywords AS kw WHERE keyword = 'test' AND keyword NOT IN ( SELECT keyword FROM keywords WHERE keyword = kw.keyword ) GROUP BY kw.keyword There is a result contrary to MySQL v5.0.22 (tested on FreeBSD) which does not return a result. When omitting the GROUP BY statement, there are no results returned (as is supposed to). How to repeat: Execute this query on MySQL v5.0.41: SELECT * FROM keywords AS kw WHERE keyword = 'test' AND keyword NOT IN ( SELECT keyword FROM keywords WHERE keyword = kw.keyword ) GROUP BY kw.keyword