如何使用MySQL覆盖Select语句中的值?

时间:2015-01-15 23:22:23

标签: mysql

我有2个表,这两个表都有很多列。但是,它们有一列具有相同的名称。

现在,我想从这两个表中进行选择,但我希望我的第二个表的值覆盖第一个表的值。

这样的事情:

SELECT d.*,
IFNULL((SELECT animal FROM test2 WHERE id = 1), d.animal) as animal
FROM test1 as d
WHERE d.id = 5

所以基本上我想要的是如果它在第二个表中找到一个动物,将第一个覆盖到完全相同的名称,否则什么都不做。

重要的是查询必须需要" animal"的名称结果,因为整个应用程序依赖于它。

是否可以轻松实现?

1 个答案:

答案 0 :(得分:3)

问题可能是d.*中有一个名为animal的列。只需为新列添加不同的别名:

SELECT d.*,
       IFNULL((SELECT t2.animal FROM test2 t2 WHERE t2.id = 1), d.animal) as new_animal
FROM test1 d
WHERE d.id = 5;

或单独列出所有列,但不包括旧的animal

SELECT d.col1, d.col2, . . .,
       IFNULL((SELECT t2.animal FROM test2 t2 WHERE t2.id = 1), d.animal) as new_animal
FROM test1 d
WHERE d.id = 5;