2017-02-06 62 views
-1
+--------------+---------------+ 
| First number | Second number | 
+--------------+---------------+ 
|  1  |  2  | 
|  2  |  3  | 
|  3  |  4  | 
|  4  |  5  | 
+--------------+---------------+ 

所以我在SQL上有这个表。我想要得到一个特定数字的所有后代。例如,如果我选择号码2的结果应该是:关于sql的查询

+--------------+---------------+ 
|  2  |  3  | 
|  3  |  4  | 
|  4  |  5  | 
+--------------+---------------+ 

数字并不需要在正确的顺序:

+--------------+------------------+ 
| First number | Following number | 
+--------------+------------------+ 
|  2  |  3   | 
|  4  |  5   | 
|  3  |  4   | 
|  1  |  2   | 
+--------------+------------------+ 

我应该保持获得与之前的结果。

我不知道该怎么做,我希望你能帮助我。

+0

什么DB引擎你用? –

+2

你的问题看起来很简单。您可以通过[here](http://www.w3schools.com/sql/sql_intro.asp) –

回答

0

这可以通过一个简单的选择语句来实现。

select * from table where "first number" >= 2

+0

轻松实现您的目标。我没有想到这一点,但数字可能不是正确的顺序,我只是编辑了这个问题。对不起,关于这个 – Maria

+0

没有关系,如果数字存储顺序或不,这个查询将无论如何工作!无论如何,正如@Pham X. Bach所建议的,你的问题是非常基本的,我建议你阅读关于SQL的指南(只是谷歌,网上有很多) –

1

您可以使用Recursive CTE

WITH RECURSIVE t 
    AS (SELECT * 
     FROM yourtable 
     WHERE "First number" = 2 
     UNION ALL 
     SELECT a.* 
     FROM yourtable a 
       JOIN t b 
        ON b."Second number" = a."First number") 
SELECT * 
FROM t 
+1

这是一个正确的解决方案。为什么被低估? –

+0

感谢Dudu .. downvote的任何理由? –