我在我的 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
答案 0 :(得分: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 CROSS JOIN
(SELECT @runtot := 0) params
ORDER BY rsvp.id ASC;
请注意,像这样的 SELECT
查询中变量的使用已被弃用。在 MySQL 8+ 中,您应该使用窗口函数。
此外,“运行总和”是以任意顺序读取行。无法保证结果与结果的顺序相同。
如果您需要有关查询的进一步帮助,请提出一个新问题。提供示例数据、所需结果以及逻辑的清晰解释。