Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了postgresql – CLSQL中具有select函数的子查询大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用clsql:SELEct函数创建子查询:

CL-USER> (SELEct [books.bookID] 
         :from [books] 
         :where
           (sql-in [books.bookID]
               (SELEct [bookID] 
                   :from [bookauthors]
                   :where 
                   (sql-= [bookauthors.authorID] 120))))
;; 2015-03-07T06:37:08 /books/ => SELECT BOOKID FROM BOOKAUTHORS WHERE (BOOKAUTHORs.AUTHORID = 120)
;; 2015-03-07T06:37:08 /books/ => SELECT BOOKS.bOOKID FROM BOOKS WHERE (BOOKS.bOOKID IN ((157)))
((157))
("bookID")

它可以工作,但是clsql运行两个查询,而不是使用sub-SELEct子句生成一个查询.这不会像让POSTGResql后端处理整个事情那样高效.

CL-USER> (clsql-sys:db-type-has-subquerIEs? :POSTGResql)
T

显然POSTGResql连接器支持子查询.有没有办法让SELEct函数生成它们?

解决方法

在上面的调用中,您实际上正在运行内部选择,然后将结果拼接到外部调用中.

您应该使用sql-Expressions而不是函数.如果您(clsql-sys:file-enable-sql-reader-SyntaX)可以使用方括号来完成,如下所示.

(选择[books.bookID]
         :来自[书籍]
         :哪里
           [in [books.bookID]
               [选择[bookID]
                   :来自[bookauthors]
                   :哪里
                   [= [bookauthors.authorID] 120]]))

另外,您可能希望使用:POSTGResql-socket3后端,因为它是三个POSTGResql clsql后端中最强大/最新的(它使用postmodern提供的cl-POSTGResql库来通过其socket API的第3版访问POSTGResql. :posgresql-socket使用PostgreS socket API的第2版,并且:POSTGRes通过C客户端使用FFI.

大佬总结

以上是大佬教程为你收集整理的postgresql – CLSQL中具有select函数的子查询全部内容,希望文章能够帮你解决postgresql – CLSQL中具有select函数的子查询所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: