gpt4 book ai didi

mysql - 如何在全选(*) View SQL中创建子查询?

转载 作者:行者123 更新时间:2023-11-29 07:25:42 25 4
gpt4 key购买 nike

我想创建一个包含多个表的 View ,但我需要的是 select * from 一个表,并 select 从其余表中选择几个。这是我到目前为止所拥有的:

CREATE VIEW `database`.`pages_view` AS
SELECT
`p`.`p_name` AS `p_name`,
`p`.`slug` AS `slug`,
`i`.`image` AS `image`,
`t`.`title` AS `title`,
`t`.`text` AS `text`,
`s`.`sec_name` AS `sec_name`
FROM
(((`database`.`pages` `p`
LEFT JOIN `database`.`page_image` `i` ON ((`p`.`id` = `i`.`pages_id`)))
LEFT JOIN `database`.`page_text` `t` ON ((`p`.`id` = `t`.`pages_id`)))
LEFT JOIN `database`.`sections` `s` ON ((`p`.`id` = `t`.`pages_id`)))
WHERE
(`p`.`visible` = 1)

我想要的是从部分中选择*而不是一一调用。

最佳答案

只需使用s.*:

CREATE VIEW database.pages_view AS
SELECT p.p_name, p.slug, i.image, t.title, t.text,
s.*
FROM database.pages p LEFT JOIN
database.page_image i
ON p.id = i.ages_id LEFT JOIN
database.page_text t
ON p.id = t.pages_id LEFT JOIN
database.sections s
ON p.id = t.pages_id
WHERE p.visible = 1;

注释:

  • 您不需要转义字符(除非您的表或列命名不当)。
  • 对于表别名尤其如此。
  • 您不需要将列重命名为相同的名称 p.p_name 因为 p_name 是多余的 - 不值得额外输入。

此外,在 View 中使用 * 时要小心。这是您问题的答案,但列的名称、类型和顺序取决于基础表。

关于mysql - 如何在全选(*) View SQL中创建子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34611723/

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