请问如何让这些代码行无错误运行
Posted
技术标签:
【中文标题】请问如何让这些代码行无错误运行【英文标题】:Please how do I get these lines of codes to run error free 【发布时间】:2018-09-19 10:01:36 【问题描述】:在 SQL 上运行这行代码时,我不断收到此错误 " The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator"
。
--考虑到他们最近的条目,我希望获得姓名、文本和 Last_authors。
Select PR1.Name, PR1.TText, PR1.Author as Last_Author
From PageRevision as PR1, PageRevision as PR2
Group by Pr1.Name, PR1.TText
Having PR1.DDate = max(PR2.DDate);
【问题讨论】:
你将cast
text field
变成varchar
比较
你真的不应该使用 text/ntext 数据类型。如果您可以更改它们,请执行此操作。此外,从查询的外观来看,您正在尝试获取每个名称/ttext 组合的最后一位作者(按 ddate) - 您应该为此使用 ROW_NUMBER()
窗口函数(按名称分区,ttext 顺序按 ddate desc) 而不是分组。
mysql != sql-server
【参考方案1】:
看来最简单的方法就是这样做。
Select PR1.Name, PR1.TText, PR1.Author as Last_Author
From PageRevision as PR1
inner join (
Select name, ttext,author
,max(ddate) ddate
From Pagerevision
group by name, ttext,author
) pr2
on pr1.name = pr2.name
and pr1.ttext = pr2.ttext
and pr1.author = pr2.author
and pr1.ddate = pr2.ddate
【讨论】:
谢谢。但这将只返回一个具有最大 ddate 的元组。我想查看更新的元组,但在没有显示旧元组的情况下。 对不起,有时会很快:)以上是关于请问如何让这些代码行无错误运行的主要内容,如果未能解决你的问题,请参考以下文章