2017-09-13 89 views
0

具有这种两个用户:显示于一个简单的MySQL查询重复值

ID = 143
用户=用户1
----
ID = 91
用户=用户2

这个简单的查询:

SELECT name FROM users where id IN (143,143,91);

它有两个结果:

User 1 
User 2 

是否有任何方法可以返回重复的值呢?我所需的输出是:

User 1 
User 1 
User 2 
+0

号您想要实现什么? –

+0

IS标识是唯一的或主键 – iamsankalp89

回答

0

我想你想要的是UNION ALL

SELECT name FROM users where id = 143 
UNION ALL 
SELECT name FROM users where id = 143 
UNION ALL 
SELECT name FROM users where id = 91 

一个简单的查询将不会返回相同的143两次。

0

据我所知,创建另一个表中插入所有要提取ID:

CREATE TABLE TUSERS (ID INT, NAME VARCHAR(20)); 
INSERT INTO TUSERS VALUES (91, 'User2'); 
INSERT INTO TUSERS VALUES (143, 'User1'); 

CREATE TABLE TMP01 (ID INT); 
INSERT INTO TMP01 VALUES(143); 
INSERT INTO TMP01 VALUES(143); 
INSERT INTO TMP01 VALUES(91); 

SELECT A.* 
FROM TUSERS A 
RIGHT JOIN TMP01 B ON A.ID=B.ID; 

输出:

ID NAME 
143 User1 
143 User1 
91 User2 
0

IN列表仅仅是用于过滤现有行。如果你想要所有的值,那么建议使用外连接。您可以即时生产IN列表:

select u.name 
from (select 143 as id union all 
     select 143 union all 
     select 91 
    ) ids left join 
    users u 
    on u.id = i.id;