【问题标题】:Problem in SQL QuerySQL查询中的问题
【发布时间】:2011-11-07 13:11:06
【问题描述】:

我的 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)

这会返回 1 行,其中包含 leftBorder 和 rightBorder,我可以在查询中使用它,例如:

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

但是!它仅在我从查询返回 1 行时起作用。但是,如果我有 10 行作为回报并且我必须为 10 个条件生成查询,我该怎么办?我可以在查询中做吗?

【问题讨论】:

  • 这里不是很清楚你想要什么...
  • 您必须明白,您当然知道自己想要完成什么,但我们其他人只有两张用途和结构未知的表格,必须按照对规则的模糊描述进行连接......
  • 您是否在 table1 中查找 leftBorderrightBorder 值与您指定的 id 值的记录的值相同的行?

标签: mysql sql sql-server sql-server-2005 sql-server-2008


【解决方案1】:

您可以使用EXISTS 条件来做到这一点:

  SELECT * 
  FROM table1 
  WHERE EXISTS
    (SELECT * 
        FROM table2 
        WHERE table2.leftBorder>=table1.leftBorder 
        and table2.rightBorder<=table1.rightBorder)

【讨论】:

【解决方案2】:

如果我正确理解你的问题,我猜你需要的是这样的:

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)
    )

【讨论】:

    【解决方案3】:

    您可以在子查询中选择您的值,您可以选择以下几种方式:

    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 的功能

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多