2010-06-27 5 views
3

Используя PHP, можно выбрать несколько строк из одной таблицы в базе данных MySQL с разными предложениями WHERE, имеющими определенный LIMIT для каждого предложения WHERE.Несколько ГДЕ с LIMIT MySQL

Например:

SELECT * FROM the_table WHERE color = 'blue' LIMIT 5 OR color = 'red' LIMIT 10 

Я знаю, что приведенное выше утверждение не работает. Но есть ли способ сделать это одним звонком в базу данных?

+2

Какой результат вы ожидаете? – Gumbo

ответ

10

Вы можете использовать UNION, если я правильно понял ваш пост правильно:

(SELECT * FROM the_table WHERE color = 'blue' LIMIT 5) 
UNION ALL 
(SELECT * FROM the_table WHERE color = 'red' LIMIT 10) 
2
SELECT * FROM the_table WHERE color = 'blue' LIMIT 5 

UNION 

SELECT * FROM the_table WHERE color = 'red' LIMIT 10 ; 
+0

Не будет работать без() для разграничения запросов, LIMIT 10 будет применяться к обоим результатам – radius

0

Посмотрите официальную документацию MySQL относительно подзапросов (здесь приведены ссылки на LIMIT, а в некоторых случаях они могут быть неверными): http://dev.mysql.com/doc/refman/5.5/en/subquery-restrictions.html - вы можете найти оптимизацию, используя подзапросы там, но UNION вероятно, довольно быстро и, вероятно, будет автоматически оптимизирован.