从数据库中获取最后一条和第一条记录的替代方法 table
Alternate way to get last and first record from database table
SELECT * FROM
(SELECT * FROM customer ORDER BY customer_id ASC LIMIT 1 )DUMMY_ALIAS1
UNION ALL
SELECT * FROM
( SELECT * FROM customer ORDER BY customer_id DESC LIMIT 1)DUMMY_ALIAS11
获取最后一条和第一条记录的其他替代方法是什么,我认为我的查询未优化
试试这个:
SELECT c.*
FROM customer c
INNER JOIN ( SELECT MIN(customer_id) AS minCustomerId,
MAX(customer_id) AS maxCustomerId
FROM customer
) AS b ON c.customer_id IN (minCustomerId, maxCustomerId);
你的查询没问题,没有问题,但你可以稍微简化一下:
(SELECT * FROM customer ORDER BY customer_id ASC LIMIT 1)
UNION ALL
(SELECT * FROM customer ORDER BY customer_id DESC LIMIT 1)
不需要使用外部查询和别名,但不要忘记在 customer_id:
上添加索引
alter table customer add index idx_customer_id (customer_id);
或者(可能更好,但这取决于上下文)将其定义为主键:
alter table customer add primary key (customer_id);
这将使您的查询得到优化。
SELECT * FROM
(SELECT * FROM customer ORDER BY customer_id ASC LIMIT 1 )DUMMY_ALIAS1
UNION ALL
SELECT * FROM
( SELECT * FROM customer ORDER BY customer_id DESC LIMIT 1)DUMMY_ALIAS11
获取最后一条和第一条记录的其他替代方法是什么,我认为我的查询未优化
试试这个:
SELECT c.*
FROM customer c
INNER JOIN ( SELECT MIN(customer_id) AS minCustomerId,
MAX(customer_id) AS maxCustomerId
FROM customer
) AS b ON c.customer_id IN (minCustomerId, maxCustomerId);
你的查询没问题,没有问题,但你可以稍微简化一下:
(SELECT * FROM customer ORDER BY customer_id ASC LIMIT 1)
UNION ALL
(SELECT * FROM customer ORDER BY customer_id DESC LIMIT 1)
不需要使用外部查询和别名,但不要忘记在 customer_id:
上添加索引alter table customer add index idx_customer_id (customer_id);
或者(可能更好,但这取决于上下文)将其定义为主键:
alter table customer add primary key (customer_id);
这将使您的查询得到优化。