我有一个MySQL查询问题。我尝试在订单产品列表中选择产品信息,但它只选择第一个记录,因为产品列表是一个数组。例如:作为命令。items = "10,11,12,13"时,"IN"只选择第一个ID "10"。如何选择所有ID,这听起来像是PHP中的内爆函数?
SELECT
orders.id,
products.name,
products.price
FROM
orders,
products
WHERE
products.id IN (orders.itens)
谢谢
你想做一个连接:
SELECT o.id, p.name, p.price
FROM orders o join
products p
on find_in_set(p.id, o.items) > 0;
不幸的是,没有办法优化这个查询。您应该创建一个关联/连接表,可能名为OrderProducts
,其中包含一个订单中的每个产品的一行。
我想你需要这样的东西
select CONCAT('"',CONCAT(Replace("10,11,12,13", ',', '","'),'"')) as str
并使用它作为in子句