YIELD 子句、语句

YIELD 关键词可以在 FETCHGO 语句中作为子句使用,也可以在 PIPE(|) 中作为独立的语句使用,同时可以作为用于计算的单句使用。

作为子句

  1. YIELD
  2. [DISTINCT]
  3. <col_name> [AS <col_alias>]
  4. [, <col_name> [AS <col_alias>] ...]

常用于返回由 GO(详情请参阅 GO 用法)语句生成的结果。

  1. nebula> GO FROM 100 OVER follow YIELD $$.player.name AS Friend, $$.player.age AS Age;
  2. ===========================
  3. | Friend | Age |
  4. ===========================
  5. | Tony Parker | 36 |
  6. ---------------------------
  7. | LaMarcus Aldridge | 33 |
  8. ---------------------------
  9. | Kyle Anderson | 25 |
  10. ---------------------------

例如, .player.name 用来获取目标点()的属性。

作为语句

引用输入或者变量

  • 可以在 PIPE 中使用 YIELD 语句。
  • 可以用于引用变量。
  • 对于那些不支持 YIELD 子句的语句,可以使用 YIELD 语句作为一个工具,控制输出。
  1. YIELD
  2. [DISTINCT]
  3. <col_name> [AS <col_alias>]
  4. [, <col_name> [AS <col_alias>] ...]
  5. [WHERE <conditions>]
  1. nebula> GO FROM 100 OVER follow YIELD follow._dst AS id | YIELD $-.* WHERE $-.id == 106;
  2. =========
  3. | $-.id |
  4. =========
  5. | 106 |
  6. ---------
  7. nebula> $var1 = GO FROM 101 OVER follow; $var2 = GO FROM 105 OVER follow; YIELD $var1.* UNION YIELD $var2.*;
  8. =====================
  9. | $var1.follow._dst |
  10. =====================
  11. | 100 |
  12. ---------------------
  13. | 102 |
  14. ---------------------
  15. | 104 |
  16. ---------------------
  17. | 110 |
  18. ---------------------

作为独立的语句

  • YIELD 语句可以独立使用,用于一些简单的计算。您可以使用 AS 重命名返回的列。
  1. nebula> YIELD 1 + 1;
  2. =========
  3. | (1+1) |
  4. =========
  5. | 2 |
  6. ---------
  7. nebula> YIELD "Hel" + "\tlo" AS HELLO_1, ", World!" AS WORLD_2;
  8. ======================
  9. | HELLO_1 | WORLD_2 |
  10. ======================
  11. | Hel lo | , World! |
  12. ----------------------
  13. nebula> YIELD hash("Tim") % 100;
  14. =====================
  15. | (hash("Tim")%100) |
  16. =====================
  17. | 42 |
  18. ---------------------

注意: 不支持 YIELD DISTINCT 在单句中使用。

  1. nebula> YIELD DISTINCT 1; --- 语法错误