以下哪个查询正确
SELECT
ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE
STATUS IN('OPEN','UPDATED')
AND
ITEM_TYPE IN ('ITEM1','ITEM2')
AND
CREATED_TIME BETWEEN 'XX' AND 'YY'
AND
UPDATED_TIME BETWEEN 'XX' AND 'ZZ'
SELECT
ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE
STATUS IN('OPEN','UPDATED')
JOIN
SELECT
ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE
ITEM_TYPE IN ('ITEM1','ITEM2')
JOIN
SELECT
ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE
CREATED_TIME BETWEEN 'XX' AND 'YY'
JOIN
SELECT
ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE
UPDATED_TIME BETWEEN 'XX' AND 'ZZ'
答案 0 :(得分:0)
第一个是正确的,除非你想要一个自连接的指数爆炸。
答案 1 :(得分:0)
第一个查询是正确的,第二个查询是正确的......一个很多的重新组合。
在回复您的评论时,如SQLMenace所指出,如果您想匹配任何条件,请使用OR:
SELECT ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE STATUS IN('OPEN','UPDATED')
OR ITEM_TYPE IN ('ITEM1','ITEM2')
OR CREATED_TIME BETWEEN 'XX' AND 'YY'
OR UPDATED_TIME BETWEEN 'XX' AND 'ZZ'
或者,如果您希望始终限制时间,但遇到第一个条件的 ,则使用包装的OR:
SELECT ID, STATUS, ITEM_TYPE,CREATED_TIME,UPDATED_TIME
WHERE (STATUS IN('OPEN','UPDATED') OR ITEM_TYPE IN ('ITEM1','ITEM2'))
AND CREATED_TIME BETWEEN 'XX' AND 'YY'
AND UPDATED_TIME BETWEEN 'XX' AND 'ZZ'
答案 2 :(得分:0)
第一个
JOINS必须在WHERE子句之前
虽然你可以用EXISTS重写JOINS然后你把它放在WHERE子句中