【问题标题】:Get all the unique entries from 2 tables从 2 个表中获取所有唯一条目
【发布时间】:2013-05-24 14:13:28
【问题描述】:

我有 2 个表,我想从 2 个不重复的表中获取所有条目,例如 如下图

Table1
MID,  ITEM, PRICE, QUANTITY
1000  ab    10     5
2000  bc    20     6

Table2
MID,  ITEM, PRICE, QUANTITY
3000  cd    30     4
1000  ed    10     7

结果应该是

MID,  ITEM, PRICE, QUANTITY
3000  cd    30     4
1000  ed    10     7
2000  bc    20     6

请告诉我通过使用哪个 SQLite 查询可以实现?

【问题讨论】:

  • 如果你想要MID 的不同记录,为什么你的输出不包含1000 ab 10 5,那么你的结果应该是1000 ed 10 7 的标准是什么?
  • 如果表1和表2中存在相同的条目,则应选择表2中的记录
  • 如何定义“相同条目”?
  • 我想与 2 个表中的 MID 列进行比较,并从 2 个表中获取唯一条目。
  • 在您的问题本身中要具体并切中要害,以便社区最初可以提供更准确的解决方案,这将有助于理解:)

标签: ios sql sqlite


【解决方案1】:

这是表达逻辑的简单方法:

select *
from table2
union all
select *
from table1
where table1.mid not in (select mid from table2)

table2 获取所有内容。然后从table1 中取出额外的行,基于mid

【讨论】:

    【解决方案2】:

    根据您的评论,您可以从Table1 中过滤掉也在Table2 中的行:

    select  *
    from    Table1 t1
    where   not exists
            (
            select  *
            from    Table2 t2
            where   t1.mid = t2.mid
                    and t1.item = t2.item
            )
    union all
    select  *
    from    Table2
    

    我假设(mid, item) 在每个单独的表中都是唯一的。

    【讨论】:

    • 我想合并所有记录并通过比较 MID 列获取所有唯一记录。
    • MID 列是唯一的,而不是 mid 和 item。如果需要,请您修改。谢谢。
    【解决方案3】:

    根据您的要求与MID进行比较,如果发现重复条目​​,则从表2中获取结果

    这个查询将帮助你:

    select  * from  Table1 
    where MID  not in ( select distinct MID from Table2 )
    union 
    select  mid,item,price,quantity from    Table2;
    

    看看这个Fiddle

    谢谢。

    【讨论】:

      猜你喜欢
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2011-03-31
      相关资源
      最近更新 更多