簡體   English   中英

如何從兩個 sql 查詢結果中獲取結果

[英]How to get results from two sql query results

我在 SQL 代碼的頂部使用SET @runtot:=0並得到 2 個查詢結果:

第一個是:

MySQL 返回一個空結果集(即零行)。 (查詢耗時 0.0002 秒。)

第二個是:

顯示第 0 - 7 行(共 8 行,查詢耗時 0.0058 秒。)

我怎樣才能只得到第二個查詢的結果?

這是我的 SQL 代碼:

SET @runtot:=0;

SELECT 
fname,
lname,
guests,
phone

FROM (

(SELECT *, 0 AS rt FROM guests_table WHERE status = 2)
UNION
 (SELECT *, (@runtot := @runtot + rsvp.guests) AS rt
 FROM 
    (SELECT *
     FROM  guests_table
     WHERE status != 2
     ) AS rsvp
WHERE @runtot + rsvp.guests <= 4)
    )rsvp

ORDER BY rsvp.id ASC

您可以在查詢中設置參數:

SELECT fname, lname, guests, phone
FROM ((SELECT *, 0 AS rt FROM guests_table WHERE status = 2)
      UNION
      (SELECT *, (@runtot := @runtot + rsvp.guests) AS rt
       FROM (SELECT *
             FROM  guests_table
             WHERE status != 2
            ) AS rsvp
       WHERE @runtot + rsvp.guests <= 4)
      ) rsvp CROSS JOIN
      (SELECT @runtot := 0) params
ORDER BY rsvp.id ASC;

請注意,在SELECT查詢中使用變量已被棄用。 在 MySQL 8+ 中,您應該使用 window 函數。

此外,“運行總和”是以任意順序讀取行。 無法保證結果與結果的順序相同。

如果您需要有關查詢的進一步幫助,請提出一個問題。 提供樣本數據、期望的結果和清晰的邏輯解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM