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