0

我需要从多个联合中选择不同的值。我需要在不同数据库的多个表上使用联合。但是我尝试使用这段代码:

SELECT DISTINCT name ((SELECT name FROM tab1) UNION (SELECT name FROM tab2))

我有这个错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION (SELECT name FROM tab2 )' at line 1
4

4 回答 4

3

试试这个:

SELECT DISTINCT name FROM (
    SELECT name FROM tab1 
    UNION 
    SELECT name FROM tab2
) TABLEALIAS
于 2012-04-22T13:35:27.187 回答
2

您不需要使用“不同”。UNION 已经为您提供了独特的结果。

SELECT name FROM tab1
UNION
SELECT name FROM tab2

这会给你正确的结果。顺便说一下,如果你想从不同的数据库中获取数据,你需要使用数据库名称。请参考以下内容;

SELECT name FROM db1.tab1
UNION
SELECT name FROM db2.tab2
于 2012-04-22T13:37:46.057 回答
1
SELECT DISTINCT name FROM ((SELECT name FROM tab1) UNION (SELECT name FROM tab2)) as sth
于 2012-04-22T13:33:30.520 回答
0

您需要一个FROM, 和一个内部结果的别名:

SELECT DISTINCT name
FROM (
  SELECT name FROM tab1
  UNION
  SELECT name FROM tab2
) x

但是,您根本不需要DISTINCT那里,UNION已经删除了重复项。

于 2012-04-22T13:46:39.210 回答