【问题标题】:SQLite: Select table1 columns where table1.columnA != table2.columnA and table2.Date = this monthSQLite:选择 table1 列,其中 table1.columnA != table2.columnA 和 table2.Date = 本月
【发布时间】:2016-04-12 13:37:39
【问题描述】:

我想要上述问题的查询代码。

样本数据:
客户(表 1):
名称 cpuid
约翰 ABX0001
suneel ABX0002
詹姆斯 ABX0003

付费(table2):
名称 cpuid 支付日期
约翰 ABX0001 3000 2016-04-11
詹姆斯 ABX0003 4000 2016-04-05

【问题讨论】:

  • 添加示例表数据,以及预期的结果。同时向我们展示您当前的查询尝试。

标签: sql sqlite


【解决方案1】:
SELECT [list] FROM [Table A] A FULL OUTER JOIN [Table B] B ON A.Value=B.Value WHERE A.Value IS NULL OR B.Value IS NULL

【讨论】:

  • 我收到类似“当前不支持 RIGHT 和 FULL OUTER JOINs”的错误,并且 sqlite 版本是 3.9.1
  • 在 SQLite 中确实不支持 RIGHT 和 FULL OUTER JOIN,它将使用 LEFT OUTER JOIN 来完成。
【解决方案2】:
select [list] from Table1 LEFT JOIN Table2 on Table1.columnA=Table2.columnA where Table2.columnA IS NULL
UNION
select [list] from Table2 LEFT JOIN Table1 on Table2.columnA=Table1.columnA where Table1.columnA IS NULL

【讨论】:

  • 上面的代码是真的,但我只想要 table1 列和 table2.date = 这个月就像'04'
  • 使用此代码(选择 [list] from Table1 LEFT JOIN Table2 on Table1.columnA=Table2.columnA where Table2.columnA IS NULL and Table2.date between '2016-04-01' and '2016 -04-30')
  • 但我只希望 table2.date 等于月份格式(04)。
  • 我应用了您的代码(Table2.date 在 '2016-04-01' 和 '2016-04-30' 之间)但没有结果。但是Table2中有两条记录。日期是'2016-04-09'。
  • 我认为你需要 UNION ALL
【解决方案3】:

大家好
感谢您的所有回答和支持。 我得到了解决方案,代码是

select [columns] from Table1 where not exists (select * from Table2 where Table2.A = Table1.A and strftime('%m', Table2.date)='04')

【讨论】:

    猜你喜欢
    • 2013-12-10
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 2022-01-28
    • 2011-03-29
    • 1970-01-01
    相关资源
    最近更新 更多