编辑:我想参加下面的查询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