編輯:我想參加下面的查詢SQL SELECT查詢邏輯,用2份
QUERY1
SELECT r.userId, r.programmeId, u.email, u.firstName, u.lastName, u.profileId, tblProgrammes.name, u.storeId, r.dateEnded AS lastPass, r.dateExpired
FROM tblUserRepeatHistory AS r INNER JOIN
tblUsers AS u ON r.userId = u.id INNER JOIN
tblProgrammes ON r.programmeId = tblProgrammes.id
WHERE (u.storeId = @storeId) AND (r.userId = @userId)
GROUP BY r.userId, r.programmeId, u.email, u.firstName, u.lastName, u.profileId, tblProgrammes.name, u.storeId, r.dateEnded, r.dateExpired
HAVING (DATEDIFF(D, MAX(r.dateExpired), GETDATE() + 31) >= 0)
與
QUERY2
SELECT TOP (1) r.id, p.maxSteps
FROM tblUserQuestionnaireHistory AS r INNER JOIN
tblProgrammes AS p ON r.programmeId = p.id AND r.stepId = p.maxSteps
WHERE (r.userId = @UserId) AND (r.programmeId = @ProgrammeId) AND (r.success = 1)
ORDER BY r.id DESC
的語法應該如下
從QUERY1連接QUERY2中選擇全部QUERY2不記錄任何記錄。即如果QUERY2返回true總比不介意從QUERY1第一部分
SELECT * WHERE NOT EXISTS JOIN QUERY2其中@userId和@programmeId查詢2來自QUERY1
您不指定哪個**版本的SQL Server .....如果您使用的是SQL Server 2005或更新的版本,則可能需要使用[Common Table Expression(CTE )](http://www.simple-talk.com/sql/t-sql-programming/sql-server-cte-basics/)設置你的第一個選擇,然後加入然後結果CTE提供給第二個選擇你需要..... – 2011-06-16 10:47:05