0

我有两个具有相同字段的表。(请不要责怪设计)。
下面仅用于示例架构

表 A
id
姓名
电话

表 B
id
名称

地址

所以,我想从表 A 或 B 中查询 id、名称,它们在单个查询中满足条件“键”,返回字段只有“ID”和“NAME”,无论它是来自 tableA 还是 tableB
的简单查询

SELECT a.id, a.name, b.id, b.name FROM TABELA as a, TABLEB as b WHERE a.keys = '1' or b.keys = '1'

它将重复的 id、name、id1、name1 返回到结果字段。

4

3 回答 3

1

使用联合或联合所有。联合只返回不同的行,联合全部返回所有行

请参阅工会手册中的示例

SELECT a.id, a.name FROM TABELA as a WHERE a.keys = '1' 
union
SELECT b.id, b.name FROM TABELb as b WHERE b.keys = '1' 
于 2013-09-27T09:18:31.653 回答
1

使用UNION代替CROSS JOIN

SELECT a.id, a.name
FROM TABELA as a
WHERE a.keys = '1'
UNION 
SELECT b.id, b.name 
FROM TABLEB as b
WHERE b.keys = '1'
于 2013-09-27T09:19:53.990 回答
1

您实际上并没有加入表,而只是想组合两个不同查询的结果。为此,我们有 UNION SELECT:

SELECT id, name FROM tableA
    WHERE keys = '1'
UNION SELECT id, name FROM tableB
    WHERE keys= '1'

如果要对结果进行排序,可以将上面用作子查询。

于 2013-09-27T09:20:41.667 回答