如何从两个不相关的表sqlite获取数据?

时间:2017-06-17 23:11:54

标签: android sql sqlite

我有两张桌子。

-m

现在我只从表1中获取数据

table_1: id, title, img_url, url, gif_url, date
table_2: id, title, url, date

如何对两列不同的表做同样的事情?

1 个答案:

答案 0 :(得分:1)

如果填写缺失的列,则可以使用UNION ALL 例如通过插入常量值(比如字符串' - ',假设您的网址是文本)来代替。

SELECT * FROM table_1 
UNION ALL
SELECT id, title, '-' as img_url, url, '-' as gif_url, date FROM table_2
ORDER BY date DESC LIMIT 10;

如果MCVE可用,测试这将更容易。

我用它作为(希望基本等同)MCVE基础:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE table_1 (a int, b int, c int);
INSERT INTO table_1(a,b,c) VALUES(1,5,7);
INSERT INTO table_1(a,b,c) VALUES(2,10,14);
CREATE TABLE table_2 (a int, c int);
INSERT INTO table_2(a,c) VALUES(3,11);
INSERT INTO table_2(a,c) VALUES(6,22);
COMMIT;

结构相同的测试代码:

select * from table_1
UNION ALL
select a, 42 as b, c from table_2
order by a LIMIT 3;

给出输出:

a                     b           c
--------------------  ----------  ----------
1                     5           7
2                     10          14
3                     42          11

注意table_2中的行,以“3”开头并包含42而不是“b”。 42是字符串' - '的整数 - 类比。