SQL - 如何从联合表中获取第一个和最后一个记录?

问题描述:

SELECT * FROM (
SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table1 WHERE product_name LIKE '%$search%' 
        UNION 
SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table2 WHERE product_name LIKE '%$search%' 
      ) AS big_table ORDER BY big_table.product_price DESC 
      LIMIT 1 

如何从上面的SQL获取第一个和最后一个记录?SQL - 如何从联合表中获取第一个和最后一个记录?

+0

你的意思是没有'Limit'上呢?最多只能得到1条记录,因此结果是您的第一条和最后一条记录。 –

+0

是没有限制或任何其他 –

+0

是没有限制或任何其他,这是我的旧查询 所以需要一个查询,可以得到第一个和最后一个记录 谢谢@TahTatsumoto –

只是在desc(最后一条记录)和asc(对于第一条记录)之间切换,只有一条记录在 和limit 1之间切换。

假设您的联盟被复制的一个原因:

SELECT * FROM (
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table1 WHERE product_name LIKE '%$search%' 
        UNION ALL 
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table2 WHERE product_name LIKE '%$search%' 
) AS big_table1 ORDER BY product_price LIMIT 1 

UNION 

SELECT * FROM (
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table1 WHERE product_name LIKE '%$search%' 
         UNION ALL 
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table2 WHERE product_name LIKE '%$search%' 
) AS big_table2 ORDER BY product_price DESC LIMIT 1 
+0

对不起,UNION来自不同的表格。我改变了我的帖子。谢谢 –

+0

我已经更新了我的答案。基础是一样的。您需要查询数据两次,获取第一条记录升序。然后对记录进行降序排序并获取第一条记录。 –

+0

我曾试过这个查询。它显示“不正确的使用UNION和ORDER BY” –

(SELECT * FROM (
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table1 WHERE product_name LIKE '%$search%' 
        UNION ALL 
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table2 WHERE product_name LIKE '%$search%' 
) AS big_table1 ORDER BY product_price LIMIT 1) 

UNION 

(SELECT * FROM (
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table1 WHERE product_name LIKE '%$search%' 
         UNION ALL 
    SELECT id_product, picture_url, product_name, product_price, tracking_link, '$ecommerce2->nama_ecommerce' AS table_identity FROM table2 WHERE product_name LIKE '%$search%' 
) AS big_table2 ORDER BY product_price DESC LIMIT 1)