UNION和LIMIT单独在MySQL运行一个查询?

时间:2017-12-08 13:07:48

标签: php mysql

我需要获得这些结果

id   details
-----------------
 6   I am old car
 7   I am old car
 8   I am old car
 9   I am old car
10   I am old car
 6   I am New car
 7   I am New car
 8   I am New car
 9   I am New car
10   I am New car

我使用MySQL查询

SELECT Cars.details FROM Cars WHERE Old = 'Old'
LIMIT 5, 5
UNION
SELECT Cars.details FROM Cars WHERE New = 'New'
LIMIT 5, 5

但我只得到新车的结果。

结果从1-5开始 是否有可能在这两组中以五人一组的形式获得所需的结果

是否有可能拆分查询LIMIT但保留在一个查询中?

1 个答案:

答案 0 :(得分:1)

mysql> drop table if exists Cars;
Query OK, 0 rows affected (0.21 sec)

mysql> create table Cars (id int , details varchar(20),old varchar(3), new varchar(3));
Query OK, 0 rows affected (0.38 sec)

mysql> insert into Cars values
    -> ( 6 ,  'I am old car','old', null),
    -> (7  , 'I am old car','old', null),
    ->  (8  , 'I am old car','old', null),
    ->  (9 ,  'I am old car','old', null),
    -> (10  , 'I am old car','old', null),
    -> ( 6 ,  'I am New car',null, 'new'),
    -> ( 7  , 'I am New car',null, 'new'),
    -> (8  , 'I am New car',null, 'new'),
    -> ( 9 ,  'I am New car',null, 'new'),
    -> (10 ,  'I am New car',null, 'new');
Query OK, 10 rows affected (0.22 sec)
Records: 10  Duplicates: 0  Warnings: 0

mysql> 
mysql> select * from
    -> (
    -> SELECT Cars.details FROM Cars WHERE Old = 'Old'
    -> LIMIT 0, 5
    -> ) a
    -> UNION all
    -> (
    -> SELECT Cars.details FROM Cars WHERE New = 'New'
    -> LIMIT 0, 5 
    -> ) 
    -> ;
+--------------+
| details      |
+--------------+
| I am old car |
| I am old car |
| I am old car |
| I am old car |
| I am old car |
| I am New car |
| I am New car |
| I am New car |
| I am New car |
| I am New car |
+--------------+
10 rows in set (0.03 sec)