gpt4 book ai didi

mysql - 将多个 mysql 查询合并为 1 个输出

转载 作者:行者123 更新时间:2023-11-29 18:02:15 27 4
gpt4 key购买 nike

我在这里做错了什么,因为我试图在 1 个查询中获取下面两个查询的所有输出,即

计数(centerpoint_stream_stable)、日期、website_online、icecast_source_online、icecast_source_ip、icecast_no_listeners、centerpoint_online、centerpoint_connection、centerpoint_stream_stable、centerpoint_stream_status、horsleypark_online、horsleypark_connection、horsleypark_stream_stable、horsleypark_stream_status、local_primary_internet_online 、 local_primary_internet_ping、local_primary_instreamer_online、local_secondary_internet_online、local_secondary_internet_ping、local_secondary_instreamer_online、system_ok我想要合并的 2 个查询是

select count(centerpoint_stream_stable) from status_log where  centerpoint_stream_stable = 'Disconnected/ Reconnected to Stream' and  date > date_sub(now(), interval 1 minute) ;

SELECT date, website_online, icecast_source_online, icecast_source_ip, icecast_no_listeners, centerpoint_online, centerpoint_connection, centerpoint_stream_stable,centerpoint_stream_status,  horsleypark_online, horsleypark_connection,horsleypark_stream_stable,horsleypark_stream_status, local_primary_internet_online,local_primary_internet_ping, local_primary_instreamer_online,local_secondary_internet_online,local_secondary_internet_ping,local_secondary_instreamer_online,system_ok FROM status_log ORDER BY id DESC LIMIT 1;

下面两个查询的并集给出以下错误;

ERROR 1248 (42000): Every derived table must have its own alias

(select * from (select 
date,
website_online,
icecast_source_online,
icecast_source_ip,
icecast_no_listeners,
centerpoint_online,
centerpoint_connection,
centerpoint_stream_stable,
centerpoint_stream_status,
horsleypark_online,
horsleypark_connection,
horsleypark_stream_stable,
horsleypark_stream_status,
local_primary_internet_online,
local_primary_internet_ping,
local_primary_instreamer_online,
local_secondary_internet_online,
local_secondary_internet_ping,
local_secondary_instreamer_online,
system_ok
FROM status_log ORDER BY id DESC LIMIT 1))


union all
(select * from (select count(centerpoint_stream_stable) from status_log where centerpoint_stream_stable = 'Disconnected/ Reconnected to Stream' and date > date_sub(now(), interval 1 minute) ));

最佳答案

括号用于子查询,然后您必须为每个子查询提供一个别名,就像错误所建议的那样。示例:

(SELECT id FROM table1) a
UNION
(SELECT id FROM table2) b

更重要的是,当您使用UNION时,两个查询中的所有字段都必须完全匹配。您的 to 查询具有完全不同的字段。

EDIT UNION 是将第一个查询的结果添加到第二个查询的结果中。就您而言,您并不是尝试将结果添加在一起,而是尝试将字段添加在一起。为此,您可以使用联接或子查询。尝试使用子查询:

SELECT (SELECT COUNT (s2.centerpoint_stream_stable)
FROM status_log s2
WHERE s2.id = s.id
AND s2.centerpoint_stream_stable = 'Disconnected/ Reconnected to Stream'
AND s2.date > date_sub(NOW(), INTERVAL 1 MINUTE)) AS my_count,

s.date, s.website_online, s.icecast_source_online, s.icecast_source_ip,
s.icecast_no_listeners, s.centerpoint_online, s.centerpoint_connection,
s.centerpoint_stream_stable, s.centerpoint_stream_status, s.horsleypark_online,
s.horsleypark_connection, s.horsleypark_stream_stable, s.horsleypark_stream_status,
s.local_primary_internet_online, s.local_primary_internet_ping,
s.local_primary_instreamer_online, s.local_secondary_internet_online,
s.local_secondary_internet_ping, s.local_secondary_instreamer_online, s.system_ok
FROM status_log s
ORDER BY id DESC
LIMIT 1;

我将您的第一个查询作为子查询进行。它为您提供第一个计数字段。我将其命名为 my_count,但您可以将其更改为您喜欢的任何名称。

为了将两个查询连接在一起,您需要提供连接条件,因此我将条件 s2.id = s.id 添加到您的第一个查询中。

我不知道为什么你的第二个查询末尾有LIMIT 1。这将为您提供一条具有最大 id 的记录。

关于mysql - 将多个 mysql 查询合并为 1 个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48243268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com