在简单的MySQL查询上显示重复值

时间:2017-09-13 09:50:53

标签: mysql sql

有这两个用户:

  

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

3 个答案:

答案 0 :(得分: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两次。

答案 1 :(得分: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

答案 2 :(得分: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;