Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql“;“在哪里?”;自动区分?_Mysql_Where - Fatal编程技术网

mysql“;“在哪里?”;自动区分?

mysql“;“在哪里?”;自动区分?,mysql,where,Mysql,Where,我有点迷路了。我的问题是: SELECT id, title FROM products WHERE id IN (4,2,6,4,2); 查询将只产生3条记录 如何获取所有5条记录(在这种情况下,我确实希望看到重复的记录) 非常感谢 更新: 抱歉说得不够准确。谢谢你的评论,事实上我没有正确理解“IN” 这是我的数据: --------------------- | id | title | --------------------- | 2 | product_2 |

我有点迷路了。我的问题是:

SELECT id, title FROM products WHERE id IN (4,2,6,4,2);
查询将只产生3条记录

如何获取所有5条记录(在这种情况下,我确实希望看到重复的记录)

非常感谢

更新: 抱歉说得不够准确。谢谢你的评论,事实上我没有正确理解“IN”

这是我的数据:

---------------------
|  id |  title      |
---------------------
|  2  |  product_2  |
---------------------
|  4  |  product_4  |
---------------------
|  6  |  product_6  |
---------------------
我的目的是接收以下数据,因为我有一个ID列表:

---------------------
|  id |  title      |
---------------------
|  4  |  product_4  |
---------------------
|  2  |  product_2  |
---------------------
|  6  |  product_6  |
---------------------
|  4  |  product_4  |
---------------------
|  2  |  product_2  |
---------------------

因此,我有一个ID列表,希望收到产品的标题。理想情况下,即使是顺序也应该保留。

我认为您对

让我们假设您有一个包含此值的简单表

id
--
1
2
3
4
5
如果你这样做

select id from simplyTable where id in (2,3,4,2,3,4)
你会得到

id
2
3
4
这是因为
中的
语句中的
是一个过滤器,决定是否显示一行。如果放置重复的值,SQL将忽略该值,因为当找到第一个值并检查匹配项时,它将显示该行,而不会继续检查其他值
所以,每个数字都需要输入一次时间,如果重复输入,则不会显示更多次

如果需要重复某些值,可以使用
UNION ALL

select id from simplyTable where id in (2,3,4)
union all
select id from simplyTable where id in (2,3,4)
这将返回给您:

id
2
3
4
2
3
4
不要只使用
UNION
,因为它将应用一个distinct,并且每个值只返回一次。
UNION
将允许您显示重复的值,因为您正在显示查询的结果i一个结果,我想这正是您所期望的

在这种情况下,您的查询将是:

SELECT id, title FROM products WHERE id IN (4,2,6);
UNION ALL
SELECT id, title FROM products WHERE id IN (4,2)

我想你对

让我们假设您有一个包含此值的简单表

id
--
1
2
3
4
5
如果你这样做

select id from simplyTable where id in (2,3,4,2,3,4)
你会得到

id
2
3
4
这是因为
中的
语句中的
是一个过滤器,决定是否显示一行。如果放置重复的值,SQL将忽略该值,因为当找到第一个值并检查匹配项时,它将显示该行,而不会继续检查其他值
所以,每个数字都需要输入一次时间,如果重复输入,则不会显示更多次

如果需要重复某些值,可以使用
UNION ALL

select id from simplyTable where id in (2,3,4)
union all
select id from simplyTable where id in (2,3,4)
这将返回给您:

id
2
3
4
2
3
4
不要只使用
UNION
,因为它将应用一个distinct,并且每个值只返回一次。
UNION
将允许您显示重复的值,因为您正在显示查询的结果i一个结果,我想这正是您所期望的

在这种情况下,您的查询将是:

SELECT id, title FROM products WHERE id IN (4,2,6);
UNION ALL
SELECT id, title FROM products WHERE id IN (4,2)
与临时表联接 :

灵感来源于。

加入临时表格 :


灵感来自。

什么“全部5项记录”<代码>在(42)中的位置
等于在(42,42,42,42,42,42)中的位置
向我们展示一个数据和所需输出的示例。什么是“全部5条记录”
WHERE IN(42)
等于
WHERE IN(42,42,42,42,42)
向我们展示一个数据示例和所需输出。非常感谢您的回答。因此,如果我有一个包含50个条目的列表,那将是相当乏味的,因为我必须先删除第二个SELECT语句的重复项?视情况而定-向我们展示一个数据和所需输出的示例,我将能够回答您的疑问谢谢,我更新了我的问题。基本上我有一个ID列表,想要标题(甚至是副本)。也许“IN”不是最好的选择,但我不知道如何替换它。这是您的结果,但您真正存储的数据是什么?因为如果这是你存储的数据,你的查询可能会成功对不起,是的,这也是我的数据。但是我的查询没有得到期望的结果。非常感谢您的回答。因此,如果我有一个包含50个条目的列表,那将是相当乏味的,因为我必须先删除第二个SELECT语句的重复项?视情况而定-向我们展示一个数据和所需输出的示例,我将能够回答您的疑问谢谢,我更新了我的问题。基本上我有一个ID列表,想要标题(甚至是副本)。也许“IN”不是最好的选择,但我不知道如何替换它。这是您的结果,但您真正存储的数据是什么?因为如果这是你存储的数据,你的查询可能会成功对不起,是的,这也是我的数据。但是我的查询没有得到所需的输出。