一次2个mysql查询

时间:2016-06-15 14:06:08

标签: mysql subquery union

我有一张像这样的桌子..

[id][Col1][Col2][id_duplicated]
 10  abc1  defg  NULL
 12  text  text  NULL
 50  abc2  text  NULL
 90  NULL  NULL  10    
 500 NULL  NULL  10 
 620 NULL  NULL  50
 700 text  text  NULL

Id_duplicated是一个值,表示这是同一个表中'id'行的副本..如果我选择id 620将显示来自id 50的所有值

问题:

select id,col1 from table where col1 is like '%abc%'

只会显示行 id = 10 id = 50 ,但我还需要显示是否有这些ID的副本

我想我需要一个子查询,首先查找是否有'%abc%',然后是第二个查询是否有id_duplicated上的任何副本等于10和50等等....

总而言之,我需要一个显示此结果的查询

[id][Col1][Col2][id_duplicated]
 10  abc1  defg  NULL
 50  abc2  text  NULL
 90  NULL  NULL  10    
 500 NULL  NULL  10 
 620 NULL  NULL  50 

对不起我的英文

1 个答案:

答案 0 :(得分:2)

如果你想要额外的行,你可以使用union和select在id_duplicated中查找结果的id:

http://sqlfiddle.com/#!9/ad817/8

select id,col1, col2, id_duplicated 
    from table 
    where col1 like '%abc%'
UNION 
select id, col1, col2, id_duplicated 
    FROM table 
    WHERE id_duplicated IN (select id from table where col1 like '%abc%')