YIELD 子句、语句

YIELD 关键字可以在 FETCH、GO 语句中作为子句使用,也可以在 PIPE 中作为独立的语句使用,同时可以作为用于计算的单句使用。

作为子句

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

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

  1. nebula> GO FROM 201 OVER relations_edge YIELD $$.student.name AS Friend, \
  2. $$.student.age AS Age, $$.student.gender AS Gender
  3. =========================
  4. | Friend | Age | Gender |
  5. =========================
  6. | Jane | 17 | female |
  7. -------------------------

例如, .student.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 201 OVER like YIELD like._dst AS id | YIELD $-.* WHERE $-.id == 200;
  2. =========
  3. | $-.id |
  4. =========
  5. | 200 |
  6. ---------
  7. nebula> $var2 = GO FROM 200 OVER like;$var1 = GO FROM 201 OVER like;YIELD $var1.* UNION YIELD $var2.*;
  8. ===================
  9. | $var1.like._dst |
  10. ===================
  11. | 200 |
  12. -------------------
  13. | 201 |
  14. -------------------
  15. | 202 |
  16. -------------------

作为独立的语句

  • 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. ---------------------

注意事项

  • DISTINCT

不支持 YIELD DISTINCT 在单句中使用

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