MYSQL获取列表中当前dayofweek所在的项目

MYSQL获取列表中当前dayofweek所在的项目,mysql,list,dayofweek,Mysql,List,Dayofweek,我想获得符合特定标准的特定记录。其中之一是,只有在某列中找到一周中的当前日期,才能找到它们。我有下面的查询,如果我自己只输入工作日,它就会工作,但是如果我使用字段名,它不会返回任何结果 因此,字段“dagen”包含任意一天的*列表,如“5”,周四和周五的“6” SELECT * FROM playlist_item WHERE playlist_id='31' AND type_id='56' AND jobcomplete='0' AND startuur<=TIME(NOW()

我想获得符合特定标准的特定记录。其中之一是,只有在某列中找到一周中的当前日期,才能找到它们。我有下面的查询,如果我自己只输入工作日,它就会工作,但是如果我使用字段名,它不会返回任何结果

因此,字段“dagen”包含任意一天的*列表,如“5”,周四和周五的“6”

SELECT * FROM playlist_item 
WHERE playlist_id='31' 
AND type_id='56' 
AND jobcomplete='0' 
AND startuur<=TIME(NOW()) AND einduur >=TIME(NOW()) 
AND (dagen='*' OR DAYOFWEEK(NOW()) IN (dagen));
从播放列表中选择*项
其中播放列表\u id='31'
和类型_id='56'
和jobcomplete='0'
和startuur=时间(现在())
和(dagen='*'或(dagen)中的DAYOFWEEK(NOW());
如果我最后用..代替dagen。。在(5,6)中,它可以完美地工作,但在使用列名时却不行。。我尝试过不使用单引号作为值,使用引号。。他们都不工作。。获得我想要的结果的正确方法是什么


SQLFiddle示例可以找到

假设dagen是一列,包含一周中以逗号分隔的天数列表,请尝试以下操作:-

SELECT * FROM playlist_item 
WHERE playlist_id='31' 
AND type_id='56' 
AND jobcomplete='0' 
AND startuur<=TIME(NOW()) AND einduur >=TIME(NOW()) 
AND (dagen='*' OR FIND_IN_SET(DAYOFWEEK(NOW()), dagen));
从播放列表中选择*项
其中播放列表\u id='31'
和类型_id='56'
和jobcomplete='0'
和startuur=时间(现在())
和(dagen='*'或在_集中查找_(DAYOFWEEK(NOW()),dagen));

请注意,逗号分隔的列表通常是数据库规范化较差的标志。

您能否提供示例数据集问题的示例此示例已成功,谢谢!我一直在寻求改进,您如何选择应该找到该记录的日期?我建议一个更好的解决方案是设置另一个表,该表每周每天显示一行和播放列表。然后,您可以执行一个简单的连接,该连接将被索引,并且可能比使用FIND_IN_SET(不能使用索引)要快得多。