如何从两个sqlite表中获取数据并对数据进行排序

时间:2017-03-12 13:06:43

标签: database sqlite android-sqlite

我有两张桌子

income

费用

expense

问题是我想查询两个表中的所有数据

SELECT income.date AS IN_DATE, expense.date AS EX_DATE FROM income, expense 

我得到奇怪的结果数据是db的两倍,你可以看到

whole result after query

您可以尝试HERE

我怎样才能得到不同的结果而不是双倍,最后想问的是不知道从两个表中获取数据并按 date 降序排序。

3 个答案:

答案 0 :(得分:1)

我的猜测是你需要union all

select 'income' as which, id, title, date
from income
union all
select 'expense' as which, id, title, date
from expense;

这将为您提供一个结果集,其中包含两个表中的行,以及每行来自哪个表的标识符。

如果使用子查询,您可以按日期排序并进行其他操作:

select ie.*
from (select 'income' as which, id, title, date
      from income
      union all
      select 'expense' as which, id, title, date
      from expense
     ) ie
order by date desc;

答案 1 :(得分:0)

您需要匹配相同的ID,否则SQL将只输出任何可能的组合。

SELECT income.date AS IN_DATE, expense.date AS EX_DATE FROM income, expense WHERE income.id LIKE expense.id

答案 2 :(得分:0)

您的简单SELECT会生成包含两列(IN_DATE, EX_DATE)的叉积。因此,您可以获得两列中值的所有可能组合。 INNER JOIN income ON expense.id=income.idWHERE income.id == expense.id可以解决问题。