gpt4 book ai didi

Mysql 子查询语法

转载 作者:可可西里 更新时间:2023-11-01 08:20:26 27 4
gpt4 key购买 nike

我想知道为什么像 select * as t 这样的语句会出现在 mysql 子查询中,如下所示。

下面根据 created_time 列删除表中最旧的 3 行。

为什么这样说

DELETE FROM mytable WHERE id = ANY 
( SELECT * FROM ( SELECT id FROM mytable ORDER BY created_time ASC LIMIT 3')as t)

不是

DELETE FROM mytable WHERE id = ANY 
(SELECT id FROM mytable ORDER BY created_time ASC LIMIT 3)

?

对我来说,第二种形式是有道理的。它不起作用,我想了解为什么第一个是必要的。具体来说,t 是什么,as t 有什么作用?

最佳答案

在许多数据库中,from 子句中的子查询需要有一个明确的别名。 as 是可选的。我通常对列使用 as 而对表不使用它:

DELETE FROM mytable
WHERE id = ANY ( SELECT * FROM ( SELECT id FROM mytable ORDER BY created_time ASC LIMIT 3') t)

为什么需要子查询是 MySQL 的变幻莫测。它不允许 deleteupdate 中的表引用出现在子查询子句中。哦,它确实允许在子查询内的子查询子句中使用它。因此,很容易解决此限制。

关于Mysql 子查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963031/

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