从值列表中选择Mysql

时间:2016-07-14 05:02:29

标签: mysql select

我有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" 我怎么写这个?

2 个答案:

答案 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_pa​​cket的。在运行时更改group_concat_max_len值的语法如下,其中val是无符号整数:

SET [GLOBAL | SESSION] group_concat_max_len = val;