mysql - 一次 2 个 mysql 查询

标签 mysql subquery union

我有一张这样的 table ..

[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=10id=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 

对不起我的英语

最佳答案

如果你想要额外的行,你可以使用 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%')

关于mysql - 一次 2 个 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837806/

相关文章:

SQL 连接与 SQL 子查询(性能)?

postgresql - 如何有效地将 Hasura 查询的结果用于另一个查询?

UML - 如何建模一个/或/两个(联合)概念?

mysql如何知道我搜索的数据库的名称

c# - 查询显示 +- 2 天的数据,但仅返回选定的日期本身

Mysql 选择一个字段值或其逆值(之二)

mysql - 在数据库中为这个 MySQL 表创建一个 uniqueID 是否有意义?

php - 从多维数组创建子类别层次结构

mysql - 优化MySQL中的子子查询

sql - 如何编写将电话号码从列转换为单列的 SQL 查询?