我希望获得符合特定条件的某些记录。其中之一就是只有在特定列中找到当周的当天才可以找到它们。我有下面的查询,如果我自己输入工作日,它就有用,但如果我使用字段名,则不会返回任何结果。
所以领域' 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));
如果我最后用.. IN(5,6)替换dagen它完全有效,但是在使用列名时却没有。我已经尝试过没有单引号作为值,带引号..他们都没有工作..获得我想要的结果的正确方法是什么?
可以找到SQLFiddle exaple here
答案 0 :(得分:0)
假设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));
请注意,以逗号分隔的列表通常表示数据库标准化不佳。