将mysql数组分隔为查询

时间:2014-03-20 14:39:27

标签: php mysql sql

我的MySQL查询问题。我在订单产品列表中尝试选择产品信息,但它只选择第一条记录,即产品列表是一个数组。 例如:是orders.itens =" 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)

谢谢

2 个答案:

答案 0 :(得分:2)

您想要加入:

SELECT o.id, p.name, p.price
FROM orders o join
     products p
     on find_in_set(p.id, o.items) > 0;

不幸的是,没有办法优化此查询。您应该创建一个关联/联结表,可能称为OrderProducts,其中包含订单中每个产品的一行。

答案 1 :(得分:1)

我想你需要这样的东西

select CONCAT('"',CONCAT(Replace("10,11,12,13", ',', '","'),'"')) as str

并将其用作in子句

的值