2015-08-25 2 views
1

я получил 4 поляMySQL, используя максимум, как когда условие

page_id 
page_category_id 
page_sequence 
page_path 

Например

record 1 

page_id = 1 
page_category_id = 22 
page_sequence = 1 
page_path = "1.jpg" 

record 2 

page_id = 1 
page_category_id = 22 
page_sequence = 2 
page_path = "2.jpg" 

record 3 

page_id = 1 
page_category_id = 23 
page_sequence = 1 
page_path = "23_1.jpg" 

record 4 
page_id = 1 
page_category_id = 23 
page_sequence = 2 
page_path = "23_1.jpg" 


record 5 
page_id = 1 
page_category_id = 23 
page_sequence = 3 
page_path = "23_1.jpg" 

.. and more records 

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

$sql_select = "select page_category_id from my_table where max(page_sequence) < 3"; 

будет показывать все page_category_id кто максимальный (page_sequence) меньше 3.

, но я не могу сделать это с max (page_sequence), где условия

Как я могу заставить его работать .. Thanks!

ответ

1

SQL такой забавный, поскольку вы почти всегда можете решать вещи несколькими совершенно разными способами. Вот NOT EXISTS альтернатива:

select distinct page_category_id 
from tablename t1 
where not exists (select 1 from tablename t2 
        where t2.page_category_id = t1.page_category_id 
        and t2.page_sequence >= 3) 

Вернуть page_category_id, если нет строки с таким же page_category_id, что имеет page_sequence> = 3.

1
select page_category_id from my_table 
GROUP BY page_category_id 
HAVING max(page_sequence) < 2 
+4

вы должны написать некоторые пояснения к запросу. – Jens

+0

https://dev.mysql.com/doc/refman/5.0/ru/group-by-handling.html – realnumber3012

+0

@ realnumber3012 не ссылаются на какой-то внешний источник (даже если это документы) без объяснения причин. _Explain_ почему это работает для OP. Также эта ссылка может в конечном итоге умереть (linkrot), поэтому отредактируйте что-то в своем вопросе, чтобы объяснить. – Bono

Смежные вопросы