【问题标题】:Cursor expression in MySQLMySQL中的游标表达式
【发布时间】:2020-10-02 07:08:51
【问题描述】:

如何在 MySQL 数据库中实现与 Oracle 游标表达式相同的功能(5.6 及以上版本) 下面是 Oracle 游标表达式的示例查询

SELECT department_name, CURSOR(SELECT salary, commission_pct 
   FROM employees e
   WHERE e.department_id = d.department_id)
   FROM departments d;

如何使用 MySQL 数据库实现同样的效果?

如果我在 oracle 上执行此查询,输出将生成, 离开名称游标结果

MCA { , ,}

BE {,}

【问题讨论】:

  • 请提供样本数据、期望的结果,并清楚说明您想要做什么。
  • AFAIK - MySQL 中没有对应的 CURSOR 表达式。但是在 MySQL 中可能也可以通过不同的方式解决特定问题。
  • @GordonLinoff 抱歉耽搁了,如果我在输出下方的 oracle 上执行它,我会得到,MCA {,,} BE {,}

标签: mysql sql cursor


【解决方案1】:

我不知道 CURSOR() 在 oracle 中的作用,因为我从未接触过 oracle,但我不知道它是否会对您有所帮助,但我认为您想加入这个:

SELECT d.department_name, e.salary, e.commission_pct. 
FROM departments d
INNER JOIN employees e
ON (e.department_id = d.department_id);

我给你这个链接以获得更多关于关节的信息: https://sql.sh/cours/jointures 并根据sql.sh:

有几种方法可以将 2 个表关联在一起。这里是 使用的不同技术的列表:

  • INNER JOIN: 两个表中条件为真时返回记录的内部连接。这是最常见的一种
    加入。
  • CROSS JOIN: 交叉连接以制作 2 个表的笛卡尔积。换句话说,允许将表的每一行与每个 第二个表的行。注意,结果的数量是 通常非常高。
  • LEFT JOIN(或LEFT OUTER JOIN):外连接返回左表的所有记录(LEFT=left)即使条件不成立
    签入另一个表。
  • RIGHT JOIN(或 RIGHT OUTER JOIN): 外部连接返回右侧表中的所有记录(RIGHT = 右),即使条件 未在其他表中检查。
  • FULL JOIN (or FULL OUTER JOIN) : 外部连接,当两个表中至少一个表中的条件为真时返回结果。
  • SELF JOIN : 允许将一个表与其自身连接起来,就好像它是另一个表一样。
  • NATURAL JOIN :如果 2 个 SQL 表之间至少有一个同名列,则 2 个表之间自然连接。
  • UNION JOIN:联合联合。

如果您有任何问题,我可以为您解答。

【讨论】:

  • 感谢@Dadinks,但我需要的输出是,在输出下方的 oracle 上执行它我会得到 ** MCA {, ,} 是 {,} **
猜你喜欢
  • 2018-07-11
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 2019-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多