【发布时间】:2014-01-12 23:57:08
【问题描述】:
这是我的 sql 查询:
SELECT c.*, CAST ( 0 as int ) Score
FROM Caregiver c JOIN Elderly e ON EXISTS
(
SELECT x.LanguageID FROM
(
SELECT 1 AS LanguageID WHERE e.Chinese = 1 UNION ALL
SELECT 2 AS LanguageID WHERE e.Malay = 1 UNION ALL
SELECT 3 AS LanguageID WHERE e.Tamil = 1 UNION ALL
SELECT 4 AS LanguageID WHERE e.English = 1 UNION ALL
SELECT 5 AS LanguageID WHERE e.Others = 1
)
x INTERSECT SELECT y.LanguageID FROM
(
SELECT 1 AS LanguageID WHERE c.Chinese = 1 UNION ALL
SELECT 2 AS LanguageID WHERE c.Malay = 1 UNION ALL
SELECT 3 AS LanguageID WHERE c.Tamil = 1 UNION ALL
SELECT 4 AS LanguageID WHERE c.English = 1 UNION ALL
SELECT 5 AS LanguageID WHERE c.Others = 1
)
y
)
WHERE e.NRIC=@nric2
AND c.CaregiverID != (SELECT CaregiverID FROM RequestPairing WHERE ReqID=@reqid2)
这不起作用,因为子查询 ( SELECT CaregiverID FROM RequestPairing WHERE ReqID=@reqid2) 返回多个值。
我的目的是利用子查询将某些行排除在主查询返回之外。
那么有什么解决方法吗?
【问题讨论】:
标签: sql sql-server-2012 subquery