gpt4 book ai didi

sql - ORA-00918:列在SELECT中的定义不明确*

转载 作者:行者123 更新时间:2023-12-03 09:17:24 26 4
gpt4 key购买 nike

获取ORA-00918:列定义不明确:运行此SQL:

SELECT *
FROM
(SELECT DISTINCT(coaches.id),
people.*,
users.*,
coaches.*
FROM "COACHES"
INNER JOIN people ON people.id = coaches.person_id
INNER JOIN users ON coaches.person_id = users.person_id
LEFT OUTER JOIN organizations_users ON organizations_users.user_id = users.id
) WHERE rownum <= 25

有什么建议吗?

最佳答案

查询的投影只能具有一个给定名称的实例。如WHERE子句所示,您有几个表,其中的一列称为ID。由于您选择的是*,因此您的投影将有几列称为ID。否则,如果不是因为编译器 throw ORA-00918,就应该这样做。

解决方案非常简单:您将必须扩展投影以显式选择命名列。然后,您可以省略重复的列,仅保留(说)COACHES.ID或使用列别名:coaches.id as COACHES_ID

也许您会喜欢上很多类型的输入,但这是唯一的方法。如果可以的话,SELECT *在生产代码中被认为是不好的做法:显式命名的列要安全得多。

关于sql - ORA-00918:列在SELECT中的定义不明确*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6233086/

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