我有2张桌子,"订单"和" genlist"。在genlist表中,一些生成的信息,id | date | order_ids(1,2,3,4 ......)。我需要从"订单"中选择所有订单。来自某个日期的orders_ids值列表。
id | date| order_ids
---|------|--------
1 | 00-00| 1,2,3,4
2 | 00-00| 5,6,7,8
SELECT * FROM orders
WHERE id IN (
select order_ids from genlist
where date ='2016-07-04'
)
它不能正常工作,只返回list order_ids(1,2,3,4 ...)的第一个元素。只是" 1" 我怎么写这个?
答案 0 :(得分:0)
试试这个:
Select *,b.desc1,b.desc2 from (Select * from orders) as a left join (select order_ids,desc1,desc2 from genlist) as b on a.order_ids = b.order_ids
答案 1 :(得分:0)
我解决了这个问题。
select * from orders
where FIND_IN_SET(id, (select group_concat(order_ids)
from gen_list))
它运作良好,但应该提到
结果被截断为group_concat_max_len系统变量给出的最大长度,该变量的默认值为1024.尽管返回值的有效最大长度受到值的约束,但该值可以设置得更高。 max_allowed_packet的。在运行时更改group_concat_max_len值的语法如下,其中val是无符号整数:
SET [GLOBAL | SESSION] group_concat_max_len = val;