【发布时间】:2020-12-28 15:33:23
【问题描述】:
如何在不使用 WHERE 部分中的多列选择的情况下重写此 SQL 查询 SQLFiddle。
【问题讨论】:
-
您的问题到底是什么? Sql server 不支持该语法,就像它不支持 SQLite 和/或 MySQL(或其他 dbms,就此而言)支持的许多其他语法一样。反之亦然。
标签: mysql sql sql-server edx
如何在不使用 WHERE 部分中的多列选择的情况下重写此 SQL 查询 SQLFiddle。
【问题讨论】:
标签: mysql sql sql-server edx
语法(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
)
【讨论】:
select 'whateveryouwant' 并且它仍然可以工作。