我有两张桌子
收
费用
问题是我想查询两个表中的所有数据
SELECT income.date AS IN_DATE, expense.date AS EX_DATE FROM income, expense
我得到奇怪的结果数据是db的两倍,你可以看到
您可以尝试HERE
我怎样才能得到不同的结果而不是双倍,最后想问的是不知道从两个表中获取数据并按 date 降序排序。
答案 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.id
或WHERE income.id == expense.id
可以解决问题。