2016-09-15 147 views
-1

我想比较几乎desame列名的两个不同表,并通过在具有相同值的列上标记1,并输出0来给出ID列不变的ID值。比较两个表并找到不匹配的记录

表1

ID | Value | Color 
1 | good | red 
2 | bad | blue 

表2

ID | Value | Color 
1 | any | red 
2 | bad | blue 

输出

ID | Value | Color 
1 | 0  | 1 
2 | 1  | 1 

,其中,在0与不同列的值的值。

+1

这里是你的代码? –

+0

我还没有构建任何查询。这对我来说非常困惑。 –

+1

你可以从这个问答开始http://stackoverflow.com/questions/2014890/comparing-data-between-two-mysql-tables-with-php - 这是谷歌搜索之后发现的许多“比较2 mysql表php” (为你)。 *享受!* –

回答

0
SELECT table1.id, 
    CASE WHEN table1.value=table2.value THEN 1 ELSE 0 END AS value, 
    CASE WHEN table1.color=table2.color THEN 1 ELSE 0 END AS color 
FROM table1 JOIN table2 ON table2.id=table1.id 
ORDER BY 1; 

或短的方法:

SELECT table1.id, (table1.value=table2.value) AS value, (table1.color=table2.color) AS color 
FROM table1 JOIN table2 ON table2.id=table1.id 
ORDER BY 1; 

方法在MySQL的语法:

SELECT table1.id, 
    IF(table1.value=table2.value, 1, 0) AS value, 
    IF(table1.color=table2.color, 1, 0) AS color 
FROM table1 JOIN table2 ON table2.id=table1.id 
ORDER BY 1; 
+0

嗨,我试过查询,但它给了我错误的输出。有没有办法像IF ELSE方法那样做? –

+0

我已经添加了MySQL数据库的方法。 –

+0

我明白了,现在查询正在工作。谢谢先生。 –

相关问题