2011-10-20 138 views
1

我有两个表,ab。两个表都包含一个config_data列。 a在另一个数据库中,而b在另一个数据库中。从两个表中选择值

我想选择a不在b值,以及该ba值。

这是我当前的查询:

SELECT b.dim2 
FROM sakthi_a1.`config_data` AS a 
JOIN sakthi_a2.`config_data` AS b 
    ON a.dim2<>b.dim2 
GROUP BY b.dim2 

它不工作。我需要一个查询来解决这个问题。

忘记上述查询。我知道这是错的。

我需要根据上面给出的条件从这些表中选择一个值。可能吗?

的样本数据

sakthi_a1.config_data 
id dim1 dim2     config_value 
1 site is_module_page   0 
2 site default_html_header_tpl html_headedr.tpl 
3 site facebook    test 


sakthi_a2.config_data 
id dim1 dim2     config_value 
1 site is_module_page   0 
2 site default_html_header_tpl html_headedr.tpl 
3 site error     Invalid page 
+3

如果我每当我看到'它不工作',没有错误信息就会失去一根头发,应该工作,或任何不正确的结果,我会秃头。到处。 – Bojangles

+1

@JamWaffles:我害怕无处不在:D –

回答

1

什么类似下面的查询:

(
    SELECT 
     a.* 
    FROM 
     a 
    WHERE NOT EXISTS(
     SELECT 
      * 
     FROM 
      b 
     WHERE 
      b.dim = a.dim 
    ) 
) 

UNION 

(
    SELECT 
     b.* 
    FROM 
     b 
    WHERE NOT EXISTS(
     SELECT 
      * 
     FROM 
      a 
     WHERE 
      a.dim = b.dim 
    ) 
) 
0

试试这个(在一个不属于在B行)

SELECT a.* 
FROM sakthi_a1.`config_data` AS a 
LEFT JOIN sakthi_a2.`config_data` AS b 
    ON a.id = b.id 
WHERE b.id IS NULL