gpt4 book ai didi

mysql 根据 select 中的值创建命名表

转载 作者:行者123 更新时间:2023-11-29 02:39:42 25 4
gpt4 key购买 nike

我有一个表,System,其中有一堆字段,包括 System.serial。我有一个序列号列表,我想获取其状态。

足够简单:

Select * from System where System.serial in ('s1','s2', 'sn');

然而,序列号列表也有不在 System 表中的序列号。显然它们不在结果中。

我希望丢失的连续出版物也显示在结果中,但没有数据。

我能想到的最好的方法是制作一个包含一列的临时表,serial,然后 left join System 就可以了。

如何创建临时表来做到这一点?

类似于:

Select listOfSerials.serial, System.* 
from (Select ('s1','s2', 'sn') as serial ) as ListOfSerials
left join System on System.serial = ListOfSerials.serial;

谢谢,瑞安

最佳答案

您的解决方案是正确的,即创建一个虚拟表,用于对您的真实数据进行 LEFT JOIN。

您可以将派生表创建为一系列 UNIONed SELECT 语句,这些语句选择没有表引用的文字值。

SELECT listOfSerials.serial, System.* 
FROM (
SELECT 's1' AS serial
UNION SELECT 's2'
UNION SELECT 'sn'
) AS ListOfSerials
LEFT JOIN System ON System.serial = ListOfSerials.serial;

只需要在UNION中的第一个SELECT中定义一个列别名即可。其余部分需要使用该列别名。

关于mysql 根据 select 中的值创建命名表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55291263/

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