2015-02-17 3 views
0

У меня есть два условия для моего запроса, если count (a.id) больше 1, чем условие DAYS LIKE '% 2%' или DAYS LIKE '% 6%. Но я не знаю, как это сделать. Я пробовал этот запрос ниже, но он ошибается.MySql Выберите IF определите, какое условие должно быть реализовано.

Может ли кто-нибудь мне помочь? Благодарю.

Ps. Извините за мой английский.

SET @time = '20:59:59'; 

SELECT * 
FROM `msshift` a 
WHERE IF(
     a.`TIMEFROM` < a.`TIMETO`, 
     CAST(@time AS TIME) BETWEEN a.`TIMEFROM` AND a.`TIMETO`, 
     (CAST(@time AS TIME) BETWEEN CAST('00:00:00' AS TIME) AND a.`TIMETO`) OR 
     (CAST(@time AS TIME) BETWEEN a.`TIMEFROM` AND CAST('24:00:00' AS TIME)) 
    ) = 1 AND PLANT = '1011' AND IF(COUNT(a.ID) > 1, a.DAYS LIKE '%2%', a.DAYS LIKE '%6%') 

ответ

0

Вы не можете использовать агрегатные функции в предложении where. Это то, на что предназначен предложение «иметь».

Я не могу сказать, что будет с конкретным запросом, не видя структуру и не зная, к чему приводит ваше стремление, но вот пример.

таблицы: Foo ID: INT foreign_id: INT Имя: CHAR

SELECT count(*) as grouped_count from foo 
GROUP BY foreign_id 
HAVING grouped_count > 5 

Это будет возвращать каждую группу записей, относящихся к внешней таблице, которая имеет более 5 записей в своей группе.

Надеюсь, это поможет.