Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql查询如何基于信息模式工作_Mysql_Select_Information Schema - Fatal编程技术网

mysql查询如何基于信息模式工作

mysql查询如何基于信息模式工作,mysql,select,information-schema,Mysql,Select,Information Schema,我试图在上解决一个MySQL查询,需要绘制以下模式: * * * * * * * * * * * * * * * 在讨论中,我发现了下面的mysql查询,它从information\u schema中获取数据,以绘制所需的模式,这是我无法理解的 SELECT REPEAT('* ', @NUMBER := @NUMBER - 1) FROM information_schema.tables, (SELECT @NUMBER:=6) t LIMIT 5 任何人都可以解释一下这个查询的

我试图在上解决一个MySQL查询,需要绘制以下模式:

* * * * * 
* * * * 
* * * 
* * 
*
在讨论中,我发现了下面的mysql查询,它从
information\u schema
中获取数据,以绘制所需的模式,这是我无法理解的

SELECT REPEAT('* ', @NUMBER := @NUMBER - 1) FROM information_schema.tables, (SELECT @NUMBER:=6) t LIMIT 5

任何人都可以解释一下这个查询的流程,它到底是如何工作的吗?

它的工作方式是info schema点表中可能有数百行供您使用

你可以核实一下。它只需要一个超过5行的源代码。它可能是任何东西


它进行交叉连接,将变量(
@NUMBER
)初始化为数字6。它从5个asteriks开始返回重复,每次减少1个,限制为5行。

它只是使用一个表,该表应该有足够的行用于迭代。“如果你不习惯这种事情,那就太晦涩了。”戈登林诺夫:谢谢你的回答。我理解,这是使用表来获得足够的行。但您能否解释一下,它是如何确保从信息模式中获取表的,关于哪一个不确定是否有足够的行。如果你能再详细一点,你会很好的。我个人认为,
将是一个更好的选择。这些条目是否来自临时信息表模式?我找不到足够的参考,无法在这些表中插入条目。我还尝试在本地设置中执行此查询,共获得283条记录。但是这些记录是从哪里产生的呢?你能解释一下吗?在专业信息模式数据库中大约有3打表。当结构和关系以及它们所持有的所有其他内容发生变化时,它们由服务器自动维护。星号查询中有两个表。第一个表有283行(我的表有311行左右)。第二个表是一个具有1行1列的派生表。是6号。因此,对于您来说,如果未附加
限制5
,您有可能运行283次。您需要记住,这只是MxN的笛卡尔积,其中M=283,N=1。但是限制5将其减少为5。这个问题基本上与仅用作开始生成星号的虚拟输入无关。有人可能还应该提到,如果DBA注意,利用
信息\u schema.tables
来达到这种不名誉的目的,将使您的数据库特权被立即撤销。就服务器资源而言,信息模式中的
表的查询成本特别高。。。也许是资源最密集的一个。这些“表”不是“真实”表——它们是通过SQL接口公开内部服务器数据结构的模拟表。孩子们,不要在家里尝试。是的,这可能是一个非常鲁莽的尝试,以保证有东西可以打击。很好的观点@michaelsqlbot