带有where子句的M​​ySQL限制

时间:2012-09-03 12:05:11

标签: mysql limit

我想要搜索的视图中有一些数据。数据有不同的类型(在列中定义),我想为每种类型定义不同的限制。

示例my_view

id   |    type    |     content
--        ----          -------
1         'dog'        'Lorem ipsum dolor sit amet, consectetur...'
2         'cat'        'adipisicing elit, sed do eiusmod...'
3         'cat'        'tempor incididunt ut labore...'
4         'dog'        'et dolore magna aliqua...'

我想要一个查询:

SELECT * FROM `my_view` WHERE ... LIMIT [[ max of 2 dogs, 1 cat and 1 sheep]]

我当然可以为此做三个查询并将它们组合在一起(在查询中或之后),但据我所知,将为每次搜索重新创建视图,因此效率非常低

2 个答案:

答案 0 :(得分:2)

你不可能做到一切。

使用联盟

(SELECT * 
FROM my_view
WHERE type='dog'
ORDER BY yyy
LIMIT 2)

UNION

(SELECT * 
FROM my_view
WHERE type='cat'
ORDER BY xxx
LIMIT 1)

答案 1 :(得分:0)

使用这样的子选择:

SELECT * 
FROM dogs, cats, sheeps, animals 
WHERE 
dogs.dog_id = (select dogs.dog_id from dogs where dogs.fk_animal_id = animals.animal_id limit 2) AND 
cats.cat_id = (select cats.cat_id from catswhere cats.fk_animal_id = animals.animal_id limit 1) AND 
sheeps.sheep_id = (select sheeps.sheep_id from sheeps where sheeps.fk_animal_id = animals.animal_id limit 1)