我不知道这个SQL查询的工作方式和:=运算符

时间:2014-12-08 09:10:15

标签: mysql sql

我在网上找到了这个sql查询,我确实工作但是我无法解析它。 我没有使用'@'或“:=”的任何疑问 如果有人能够解释它意味着什么以及它所涉及的主题,它会对我有很多帮助..

 select (select (@) from (select(@:=0x00),(select (@) from (information_schema.columns) where (table_schema>=@) and (@)in (@:=concat(@,0x3C,0x62,0x72,0x3E,' [ ',table_schema,' ] > ',table_name,' > ',column_name))))a)# 

1 个答案:

答案 0 :(得分:2)

首先,我会通过重新格式化来使查询更具可读性:

1) SELECT (SELECT (@)
2)         FROM (SELECT (@:=0x00),
3)                      (SELECT (@)
4)                       FROM (information_schema.columns)
5)                       WHERE (table_schema >= @)
6)                       AND   (@) IN (@:=CONCAT(@,0x3C,0x62,0x72,0x3E,' [ ',table_schema,' ] > ',table_name,' > ',column_name))
7)                       )
8)               )
9)        a);

@的分配如下:

  1. 在第3行中,它获得值0x00(十进制:0)
  2. 在第5行中,此值用于大于(table_schema> = 0)
  3. 第6行是将每个架构,表和列名称连接到@
  4. 的方法
  5. @在第1行返回,包含结构的连接列表
  6. 在第6行中,为变量添加了额外的<br>(0x3C,0x62,0x72,0x3E)以使输出更具可读性