根据给定ID的mysql获取记录

根据给定ID的mysql获取记录,mysql,Mysql,这是我正在执行的查询 SELECT email,firstname,lastname FROM `sco_customer` WHERE id_customer IN (7693,7693,7693,7693,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7693,3,3,3,3,3,7693,7693,3,3,3,7693,3,3,3) 这只给了我两条记录,因为

这是我正在执行的查询

SELECT email,firstname,lastname FROM `sco_customer` 
WHERE id_customer IN (7693,7693,7693,7693,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7693,3,3,3,3,3,7693,7693,3,3,3,7693,3,3,3)
这只给了我两条记录,因为它们的id_客户数相同,已过滤,即7693,3

email   firstname   lastname
abc@any.com Test    Mage
abc2@any.com    User    Mage
它应该提供与客户id相同数量的记录


您对如何实现这一目标有何想法?

以下陈述应该可以解决您的问题:

SELECT email,firstname,lastname FROM `sco_customer` 
join (select 7693 as id_customer union all 
select 7693 union all
select 7693 union all 
select 3 union all  
select 3 union all  
select 3    
) tmp on sco_customer.id_customer = tmp.id_customer
试试下面。代替WHERE子句,您可以生成一个虚拟表并将其与主表联接。with适用于版本8或更高版本

WITH SAMPLE AS 
(
SELECT 7693 AS ID FROM DUAL
UNION ALL
SELECT 3 AS ID FROM DUAL
)
SELECT email,firstname,lastname FROM `sco_customer`
INNER JOIN SAMPLE ON SAMPLE.ID=ID_CUSTOMER
以下是mysql版本8:

SELECT email,firstname,lastname FROM `sco_customer`
INNER JOIN (
SELECT 7693 AS ID FROM DUAL
UNION ALL
SELECT 3 AS ID FROM DUAL
)SAMPLE ON SAMPLE.ID=ID_CUSTOMER

为什么要重复结果?由于循环中的某些逻辑问题,您必须将ID列表转换为行源,即不在WHERE中,而是作为FROM中的表。指定精确的MySQL版本。请参阅,但请注意,数据显示问题通常在应用程序代码中得到最佳解决。这只适用于一个id 7693。我将有很多id。如果匹配,它将适用于所有SCO_CUSTOMER.id_CUSTOMER。如果没有id 3,它将无法工作。你要做的是使用左连接而不是内连接,但你在这里的问题是不同的。相信我,这是可行的。我的意思是,如果我有多个id数据,比如769376937693,3,3,3,那么你应该添加你想要的相同值,并用这些值扩展你的虚拟表@newphpdev这只适用于一个id 7693我会有很多ids@newphpdev不,如果您添加一行,并从union all中选择3,则它也适用于其他id。id来自何处?我的意思是如果我有多个id数据,比如769376937693,3,3,3?@newphpdev然后展开列表:选择email,firstname,lastname FROM sco_customer join选择7693作为id_customer union all选择7693 union all选择7693 union all选择7693 union all选择3 union all选择3 union all选择3 union all在sco_customer.id_customer=tmp.id_customer工具上选择3 tmp谢谢你能根据它更新吗?事实上,我只是在获取一些id的值,这就是我在mysql函数中使用的原因。