我的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)
谢谢
答案 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子句
的值