Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:查询一个表并可能用另一个表中的值替换某些字段_Mysql - Fatal编程技术网

MySQL:查询一个表并可能用另一个表中的值替换某些字段

MySQL:查询一个表并可能用另一个表中的值替换某些字段,mysql,Mysql,我有两张桌子。表1是我们的主要数据表,表2有表1列的子集和表1中包含的记录的子集。您可以将表2视为包含表1中某些记录的更正值的表 我想使用以下规则从这些表中查询一条或多条记录: (1) 如果记录的id仅存在于表1中,我希望返回该记录的所有列(相当于select*fromtable1,其中Table1.id位于(1,2,3)) (2) 如果记录的id同时存在于Table1和Table2中,那么对于Table2中的每一列,Table2值应优先于Table1的相应值。对于表1中的所有列(而不是表2中的

我有两张桌子。表1是我们的主要数据表,表2有表1列的子集和表1中包含的记录的子集。您可以将表2视为包含表1中某些记录的更正值的表

我想使用以下规则从这些表中查询一条或多条记录:

(1) 如果记录的id仅存在于表1中,我希望返回该记录的所有列(相当于
select*fromtable1,其中Table1.id位于(1,2,3)

(2) 如果记录的id同时存在于Table1和Table2中,那么对于Table2中的每一列,Table2值应优先于Table1的相应值。对于表1中的所有列(而不是表2中的列),我们返回表1的值

例如:

表1

| id | Column1 | Column2 | Column3 | Column4 |
----------------------------------------------
| 1  | AA-1-1  | AA-1-2  | AA-1-3  | AA-1-4  |
| 2  | AA-2-1  | AA-2-2  | AA-2-3  | AA-2-4  |
| 3  | AA-3-1  | AA-3-2  | AA-3-3  | AA-3-4  |
表2

| id | Column2 | Column4 |
--------------------------
| 1  | ZZ-1-2  | ZZ-1-4  |
| 3  | ZZ-3-2  | ZZ-3-4  |
查询(1、2、3)中id为的记录应返回:

| id | Column1 | Column2 | Column3 | Column4 |
----------------------------------------------
| 1  | AA-1-1  | ZZ-1-2  | AA-1-3  | ZZ-1-4  |
| 2  | AA-2-1  | AA-2-2  | AA-2-3  | AA-2-4  |
| 3  | AA-3-1  | ZZ-3-2  | AA-3-3  | ZZ-3-4  |
有没有可能提出这样的疑问?提前谢谢

SELECT table1.id, Column1, IFNULL(table2.Column2, table1.Column2),
    column3, IFNULL(table2.Column4, table1.Column4)
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE (table1.id IN (1,2,3))

IFNULL(a,b)
转换为
IF(a为NULL),则b为else a
-如果第一个参数为NULL,则返回第二个参数,否则返回第一个参数。

可以添加为第2列,第4列