Mysql查询,允许重复
我有一个名为Data(id,url)的表。我的项目中的一个api返回ID列表(该列表中可能有重复的ID)。为了回答这个问题,让我们假设这个列表为(1,1,2,3,4,4) 我正在尝试查找与这些ID关联的URL 我第一次天真的尝试是在子句中使用:Mysql查询,允许重复,mysql,sql,Mysql,Sql,我有一个名为Data(id,url)的表。我的项目中的一个api返回ID列表(该列表中可能有重复的ID)。为了回答这个问题,让我们假设这个列表为(1,1,2,3,4,4) 我正在尝试查找与这些ID关联的URL 我第一次天真的尝试是在子句中使用: SELECT url from Data where id in ( 1, 1, 2, 3, 4, 4); 这将返回四行。i、 e.id 1、2、3和4的URL 我想要的是六行,每一行对应指定的id(需要保留重复的行) 我理解IN条款在这种情况下没有帮
SELECT url from Data where id in ( 1, 1, 2, 3, 4, 4);
这将返回四行。i、 e.id 1、2、3和4的URL
我想要的是六行,每一行对应指定的id(需要保留重复的行)
我理解IN条款在这种情况下没有帮助。谁能给我指一下正确的方向吗
我可以通过迭代列表来查询个人id,但这是我最后的选择
更新:添加有关表的更多详细信息
mysql> desc Data;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| url | varchar(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> select * from Data;
+----+-------+
| id | url |
+----+-------+
| 1 | a.com |
| 2 | b.com |
| 3 | c.com |
| 4 | d.com |
+----+-------+
4 rows in set (0.00 sec)
mysql> select url from Data where id in(1,1,2,3,4,4);
+-------+
| url |
+-------+
| a.com |
| b.com |
| c.com |
| d.com |
+-------+
4 rows in set (0.00 sec)
我想要的是:
+-------+
| url |
+-------+
| a.com |
| a.com |
| b.com |
| c.com |
| d.com |
| d.com |
+-------+
这个效果很好
SELECT url
from table1
where id in ( 1, 1, 2, 3, 4, 4);
在id上删除唯一的
alter table Data drop index PRI;
删除主键
ALTER TABLE Data DROP INDEX `PRIMARY`;
不漂亮,但是
select url
from Data
inner join
( SELECT id FROM (
SELECT 1 as id UNION ALL
SELECT 1 as id UNION ALL
SELECT 2 as id UNION ALL
SELECT 3 as id UNION ALL
SELECT 4 as id UNION ALL
SELECT 4 as id
) as list_table ) as table2
on (Data.id = table2.id);
我发现几乎没有办法
从列表中选择
值或将一个表连接到列表中,但是你可以查看这个如果你发布该表的结构,它可能会很有用。你能澄清你的问题吗?您在
列表中的是多余的,是的,但是您的查询没有理由不返回带有这些ID的所有6个URL。此外,如果它不是唯一的,则不应使用id
作为字段名;“这太令人困惑了。”EdCottrell请查看更新的问题。我希望这将澄清一些疑问。谢谢,谢谢你的回复。但在我的例子中,id是主键,它是唯一的。如果要存储重复项并选择重复项,那么为什么要在它上设置唯一项?要删除唯一的吗?请参阅更新的部分。就我而言,我想我不能更改任何表格。它已经有人居住了。此数据将导出到excel工作表,用于频率计数和其他目的。您只需删除索引主项,就会丢失任何内容。