我的SQL查询中存在很大问题,我不知道如何决定它。 所以,我有查询:
SELECT * FROM table1 WHERE leftBorder <= 10 AND rightBorder >= 100
没关系。
下一步。
SELECT * FROM table1 WHERE
(leftBorder <= 10 AND rightBorder >= 100) OR (leftBorder <= 200 AND rightBorder >= 500)
没关系。
但是,我想从查询中获取左右边框的值,所以:
SELECT * FROM table1 WHERE
???
(SELECT leftBorder, rightBorder FROM table2 WHERE id in (1,2,3,4,5))
我需要在查询中为查询创建多条件...是否可能? 我没有程序,只是查询。
SELECT TOP 1 leftBorder, rightBorder FROM table2 WHERE id in (1,2,3,4,5)
这给我带了leftBorder和rightBorder的1行,我可以在查询中使用它,如:
SELECT * FROM table1 WHERE
table1.leftBorder <= table2.leftBorder AND table1.rightBorder >= table2.rightBorder
(SELECT TOP 1 leftBorder, rightBorder FROM table2 WHERE id in (1,2,3,4,5)) as table2
BUT!它只是当我从查询返回1行时。但是我应该怎么做,如果我有10行作为回报,我必须生成10个条件的查询?我能在查询中做到吗?
答案 0 :(得分:0)
您可以在子查询中选择值,您可以选择以下几种方法:
SELECT * FROM table1
WHERE l leftBorder <= (SELECT leftBorder FROM table2 WHERE id IN(1,2,3,4,5)
或者你可以从子查询中的表中选择并使用这样的别名:
SELECT * FROM table1,
(SELECT leftBorder FROM table2 WHERE id IN(1,2,3,4,5) as temp
WHERE leftBorder<= temp.leftBorder
取决于您想要达到的目标和DBS的功能
答案 1 :(得分:0)
如果我理解你的问题,我想你需要的是这样的:
SELECT
DISTINCT t1.*
FROM
table1 t1
JOIN
table2 t2
ON (
t1.leftBorder <= t2.leftBorder
AND t1.rightBorder >= t2.rightBorder
AND t2.id IN (1,2,3,4,5)
)
答案 2 :(得分:0)
您可以使用EXISTS
条件执行此操作:
SELECT *
FROM table1
WHERE EXISTS
(SELECT *
FROM table2
WHERE table2.leftBorder>=table1.leftBorder
and table2.rightBorder<=table1.rightBorder)