mysql select in 不排重查询

select uid from table1 where id in(1,2,3,4,4,4,4);
数据表有id为4的记录,而且uid一样。现在执行的结果是,出现一个uid,重复的记录,默认都给去掉了。现在我想实现吧重复的记录也查出来,就要出现4条相同的uid。
就想sql实现,用语言处理的建议就免了

不得行哦,where xxx in (...),即使里面列出的条件是重复的,但是结果仍然是不重复,因为数据库系统去实现SELECT的时候,是要把WHERE后面的条件先进行识别,而不是按照条件一步一步的执行,同样的道理,写语句为where id=1 or id=2 or id=3 or id=4 or id=4 or id=4,仍然只能查出不重复的4条结果。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-07
你上面的sql语句有问题,select uid from table1 where id in(1,2,3,4)就行了,干嘛还那么多4,我测试了下你的语句,完全没有去重啊,去重要加distinct的。
mysql> select * from test;
+------+------+
| uid | id |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 1 |
| 5 | 2 |
| 6 | 3 |
| 7 | 4 |
| 8 | 2 |
| 7 | 4 |
| 4 | 3 |
| 2 | 3 |
| 4 | 7 |
+------+------+
12 rows in set (0.00 sec)

mysql> SELECT uid FROM test WHERE id IN (1,2,3,4,4,4,4);
+------+
| uid |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 7 |
| 4 |
| 2 |
+------+
11 rows in set (0.00 sec)本回答被提问者采纳