gpt4 book ai didi

MySql - 您需要在哪里列出要从中提取数据的表?

转载 作者:行者123 更新时间:2023-11-28 23:38:38 24 4
gpt4 key购买 nike

我认为您需要在 FROM 子句中列出要使用的表,如下所示:

SELECT * FROM a, b WHERE a.id = b.id

我正在学习联接并看到以下内容:

SELECT a.account_id, a.cust_id, a.open_date, a.product_cd
FROM account a INNER JOIN employee e
ON a.open_emp_id = e.emp_id
INNER JOIN branch b
ON e.assigned_branch_id = b.branch_id
WHERE e.start_date < '2007-01-01'
AND (e.title = 'Teller' OR e.title = 'Head Teller')
AND b.name = 'Woburn Branch';

这里在FROM子句中只列出了两个表,如下:

FROM account a INNER JOIN employee e

FROM 子句之外的另一个连接子句中列出了另一个表,如下所示:

INNER JOIN 分支 b

我的第一个想法是因为 FROM 子句中没有列出分支表,所以会抛出无效语法错误,但我错了。

列出要从中提取数据的表时有哪些规则。任何指向官方文档的链接都会有很大帮助。

最佳答案

根据其 ON 子句的结果,INNER JOIN 子句有可能从结果集中抑制记录。

FROM a INNER JOIN b ON a.colx = b.coly

的含义完全相同
FROM a, b WHERE a.colx = b.coly

它们中的任何一个都将忽略未通过 ON 或 WHERE 子句的行。

如果您在 1990 年代的老式 Oracle 中工作,您可以编写这个所谓的 omega join

FROM a, b WHERE a.colx = b.coly(+)

代替

FROM a LEFT JOIN b ON a.colx = b.coly

无论哪种方式,您都将从结果集中的 a 中获取每一行,即使是那些通过 ON 或 WHERE 子句与 b 中的行不匹配的行。

非聚合 MySQL SELECT 语句的基本结构是这样的:

 SELECT a bunch of columns
FROM a bunch of tables joined together
WHERE a bunch of filtering predicates
ORDER BY a bunch of columns
LIMIT start,count

FROM 子句中的内容包括所有 JOINed 表。 SELECT 子句中的内容选择要包含在结果集中的列。绝对没有任何内容说您不能在 FROM 子句中提及一个表,但可以从 WHERE 子句中删除它的所有列。

关于MySql - 您需要在哪里列出要从中提取数据的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com