2016-01-02 3 views
2

У меня есть таблица вроде этого:MySQL: случай, когда альтернатива/правильное утверждение

Order | UserID | Date  | Channel | 
------------------------------------------ 
1  | 1  | 2015/01/01 | Direct | 
2  | 1  | 2015/01/02 | Natural | 
3  | 1  | 2015/01/03 | PPC  | 
4  | 1  | 2015/01/04 | Direct | 
1  | 2  | 2015/01/01 | Natural | 
2  | 2  | 2015/01/02 | Natural | 
1  | 3  | 2015/01/01 | Direct | 
2  | 3  | 2015/01/02 | Natural | 
3  | 3  | 2015/01/03 | PPC  | 
1  | 4  | 2015/01/01 | Natural | 
2  | 4  | 2015/01/02 | PPC  | 
3  | 4  | 2015/01/03 | Direct | 
4  | 4  | 2015/01/04 | Natural | 

Я хотел бы удалить полный UserIds где Order = 1 не является «природным». Другими словами, я хотел бы удалить пользователей, которые не запускали свои веб-сайты по каналу Natural.

Это таблица, я хотел бы видеть после того, как:

Order | UserID | Date  | Channel | 
------------------------------------------ 
1  | 2  | 2015/01/01 | Natural | 
2  | 2  | 2015/01/02 | Natural | 
1  | 4  | 2015/01/01 | Natural | 
2  | 4  | 2015/01/02 | PPC  | 
3  | 4  | 2015/01/03 | Direct | 
4  | 4  | 2015/01/04 | Natural | 

Я пытался использовать случай, когда оператор, но с плохим результатом:

SELECT 
    CASE 
     WHEN Order = 1 
     WHEN Channel = 'Natural' 
    END 
FROM tablename 
+0

'CASE WHEN' не для строки fil Теринг. Вам нужно 'WHERE' с подзапросом EXIST или некоторым функциональным эквивалентом. –

+0

@ PM 77-1 Извините, что беспокоился, но какой-либо шанс для фактического запроса? – Chriser

+1

Нет. Сначала вам нужно изучить некоторые SQL. Я дал вам достаточно информации, чтобы начать. –

ответ

0

Вы должны использовать Where пункт для фильтровать записи из таблицы не case заявление

SELECT * 
FROM tablename 
WHERE Order = 1 
    AND Channel <> 'Natural' 
Смежные вопросы