Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ORA-00918:选择最后一行时发生定义模糊的列错误_Sql_Oracle - Fatal编程技术网

Sql ORA-00918:选择最后一行时发生定义模糊的列错误

Sql ORA-00918:选择最后一行时发生定义模糊的列错误,sql,oracle,Sql,Oracle,我有一个SQL脚本来显示从resultset返回的最后一行 SELECT * FROM ( SELECT D.DESCRIPTIONID_FK, D.DAY, D.TIME, D.PROFILEID_FK, E.DESCRIPTIONID, E.DESCRIPTION, E.PROFILEID_FK, E.TONEID_FK, T.TONEID, T.TONE_NAME, T.TONE_FILE FROM WA_BT_TBL_DAY D, WA_BT_TBL_DESCRIPTION E, WA_

我有一个SQL脚本来显示从resultset返回的最后一行

SELECT * FROM
(
SELECT
D.DESCRIPTIONID_FK,
D.DAY,
D.TIME,
D.PROFILEID_FK,
E.DESCRIPTIONID,
E.DESCRIPTION,
E.PROFILEID_FK,
E.TONEID_FK,
T.TONEID,
T.TONE_NAME,
T.TONE_FILE
FROM
WA_BT_TBL_DAY D,
WA_BT_TBL_DESCRIPTION E,
WA_BT_TBL_TONE T
WHERE
D.DESCRIPTIONID_FK = E.DESCRIPTIONID AND
E.TONEID_FK = T.TONEID AND
D.DAY = 'Tue' AND
D.TIME <= '11:00'
ORDER BY TIME DESC
)
WHERE ROWNUM = 1
我用蟾蜍来做这个

问题在于D.PROFILEID_FK和E.PROFILEID_FK,因为当您尝试使用*选择所有时,它们将具有相同的名称,请尝试以下操作:

SELECT * FROM
(
    SELECT
        D.DESCRIPTIONID_FK,
        D.DAY,
        D.TIME,
        D.PROFILEID_FK as D_PROFILEID, -- HERE IS WHAT WRONG
        E.DESCRIPTIONID,
        E.DESCRIPTION,
        E.PROFILEID_FK as E_PROFILEID, --AND HERE
        E.TONEID_FK,
        T.TONEID,
        T.TONE_NAME,
        T.TONE_FILE,
        row_number() over(order by d.time desc) as rn
    FROM
        WA_BT_TBL_DAY D,
        WA_BT_TBL_DESCRIPTION E,
        WA_BT_TBL_TONE T
    WHERE
        D.DESCRIPTIONID_FK = E.DESCRIPTIONID AND
        E.TONEID_FK = T.TONEID AND
        D.DAY = 'Tue' AND
        D.TIME <= '11:00'
) 
WHERE rn= 1
问题在于D.PROFILEID_FK和E.PROFILEID_FK,因为当您尝试使用*选择所有时,它们将具有相同的名称,请尝试以下操作:

SELECT * FROM
(
    SELECT
        D.DESCRIPTIONID_FK,
        D.DAY,
        D.TIME,
        D.PROFILEID_FK as D_PROFILEID, -- HERE IS WHAT WRONG
        E.DESCRIPTIONID,
        E.DESCRIPTION,
        E.PROFILEID_FK as E_PROFILEID, --AND HERE
        E.TONEID_FK,
        T.TONEID,
        T.TONE_NAME,
        T.TONE_FILE,
        row_number() over(order by d.time desc) as rn
    FROM
        WA_BT_TBL_DAY D,
        WA_BT_TBL_DESCRIPTION E,
        WA_BT_TBL_TONE T
    WHERE
        D.DESCRIPTIONID_FK = E.DESCRIPTIONID AND
        E.TONEID_FK = T.TONEID AND
        D.DAY = 'Tue' AND
        D.TIME <= '11:00'
) 
WHERE rn= 1
唯一的列时间未使用其表别名定义。应该是

ORDER BY D.TIME DESC
唯一的列时间未使用其表别名定义。应该是

ORDER BY D.TIME DESC

问题在于以下几列

.
.
.
D.PROFILEID_FK,
.
.
E.PROFILEID_FK,
.
.
.
如果为这些列指定不同的别名,问题将得到解决

D.PROFILEID_FK d_profileid_fk

E.PROFILEID_FK e_profileid_fk

问题在于以下几列

.
.
.
D.PROFILEID_FK,
.
.
E.PROFILEID_FK,
.
.
.
如果为这些列指定不同的别名,问题将得到解决

D.PROFILEID_FK d_profileid_fk

E.PROFILEID_FK e_profileid_fk

我试过了,但仍然显示了错误:ORA-00918:列定义模糊一般性问题,在选择为什么需要别名后没有按逻辑进程排序。在没有该别名的Sql Server中,它可以工作。@Pரதீப் 您的名字很难标记:P。是的,我们应该使用后处理选择,这很有意义。没有别名,它在任何地方都能工作;好的,别名就是缩短名字。@HiDayurieDave你确定吗?因为我看不到任何其他不明确的列。@HiDayurieDave您可以尝试只执行内部查询并查看吗?我尝试过,但它仍然显示错误:ORA-00918:列定义不明确一般问题,在选择为什么需要别名后不按逻辑进程排序。在没有该别名的Sql Server中,它可以工作。@Pரதீப் 您的名字很难标记:P。是的,我们应该使用后处理选择,这很有意义。没有别名,它在任何地方都能工作;好的,别名就是缩短名字。@HiDayurieDave你确定吗?因为我看不到任何其他不明确的列。@HiDayurieDave您可以尝试只执行内部查询并查看??Hi。。刚才我试过了。仍然有错误:ORA-00918:列不明确defined@HiDayurieDave它突出显示了哪一列?*@HiDayurieDave我编辑了一点,你能试试吗?@HiDayurieDave很高兴它有帮助,它就在我们的眼皮底下。。刚才我试过了。仍然有错误:ORA-00918:列不明确defined@HiDayurieDave它突出显示了哪一列?*@HiDayurieDave我编辑了一点,你能试试吗?@HiDayurieDave很高兴它有帮助,它就在我们眼皮底下