微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

子查询中的多个列:SQLite,MS SQL Server

如何解决子查询中的多个列:SQLite,MS SQL Server

如何在不使用WHERE部分中的多列选择的情况下重写此SQL查询SQLFiddle

解决方法

语法(hs1.ID,hs2.ID,hs3.ID) IN ...

SQL Server不支持。

IN语句的左侧只能有1列或变量。

您可以使用EXISTS重写它:

SELECT hs1.name,hs1.grade,hs2.name,hs2.grade,hs3.name,hs3.grade
FROM highschooler AS hs1,highschooler AS hs2,highschooler AS hs3
WHERE EXISTS (
        SELECT 1
        FROM friend AS fr1
        JOIN (
            SELECT ls.ID1,ls.ID2
            FROM likes AS ls
            WHERE  NOT EXISTS (
                    SELECT f.ID1,f.ID2
                    FROM friend AS f
                    WHERE f.ID1 = ls.ID1
                    AND f.ID2 = ls.ID2
                    )
            ) AS X ON fr1.ID1 = X.ID1
        JOIN friend AS fr2 ON X.ID2 = fr2.ID1
        WHERE fr1.ID2 = fr2.ID2
            AND hs1.ID = X.ID1
            AND hs2.ID = X.ID2
            AND hs3.ID = fr1.ID2
        )


SQL Fiddle in SQL Server

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。