如何在没有PHP的情况下从2个MySQL表构建一个新的MySQL表

如何在没有PHP的情况下从2个MySQL表构建一个新的MySQL表,php,mysql,Php,Mysql,我有两个表,我想合并到第三个表中,我想纯粹作为一个MySQL查询,而不是选择行并使用PHP while()构建第三个表 表1包含以下内容: ID Name 1 A 2 3 ID Desc 10 15 B 20 表2包含以下内容: ID Name 1 A 2 3 ID Desc 10 15 B 20 我想编写一条查询语句来生成以下组合表,但我只希望新的Desc包含表1中Name或表2中Desc的非空值,如果两个表都包含非空值,则表2将优先于表1 ID1 ID2 Desc 1

我有两个表,我想合并到第三个表中,我想纯粹作为一个MySQL查询,而不是选择行并使用PHP while()构建第三个表

表1包含以下内容:

ID Name
1  A
2
3
ID  Desc
10
15  B
20
表2包含以下内容:

ID Name
1  A
2
3
ID  Desc
10
15  B
20
我想编写一条查询语句来生成以下组合表,但我只希望新的Desc包含表1中Name或表2中Desc的非空值,如果两个表都包含非空值,则表2将优先于表1

ID1 ID2 Desc
1   10  A
1   15  B
1   20  A
2   10
2   15  B
2   20
3   10
3   15  B
3   20
这可以作为MySQL查询吗?我应该使用PHP方法吗


谢谢。

想想,你需要这个

select t1.id as id1, t2.id as id2, if(length(t2.name), t2.desc, t1.name) as desc from t1,t2;

你可以这样做:

选择a.ID作为ID1,b.ID作为ID2,(如果b.Desc不为空,则选择b.Desc,否则选择a.Name END)作为表1中的描述a完全联接表2

但这是未经测试的。。。祝你好运

问候


Paracus

这基本上与此相同:大多数数据相关的过程在纯SQL中都是可行的。。。看看你的答案。嗯,也许是@LawsonCulver。但是,我不想“创建”一个新表本身……我想通过将一个已经存在的表重置为表1和表2中的数据来刷新它。它会是“更新表结果为…”吗?如果要“重置”数据,最好先删除行,然后使用INSERT(只要不需要保留任何内容)。如果不想丢失其中的其他内容,它会变得更复杂。您必须在它存在时进行更新,在它不存在时进行插入。我认为解决方案需要比这更健壮一些,因为它需要包含“INSERT-INTO”以便生成新表(至少我认为是这样)@v、 谢尔德索维特很健壮。试着打破它!)。。。。它还可以在mysql 3等古老的sql引擎上运行。我的问题是,我没有看到所选数据是如何插入到表3@v.sheldeshov中的,您可以使用“insert-into-select”语法插入。我认为解决方案需要比这更健壮一点,因为它需要包含“INSERT-INTO”以便构建新表(至少我认为是这样)@如果表格已经存在,您可以通过“创建表格x作为选择…”创建新表格,您必须使用“插入到”。nice@ChrisPiazza。。看起来我可以一起工作。我会把我的结果发回来,并接受你的解决方案作为我工作后的答案。非常感谢你的帮助…你是一个明星@ChrisPiazza!这非常有效。非常非常感谢你的帮助(和学习)。
insert into TableThree (id1, id2, Descr)
select
    T1.id,
    T2.id,
    case LENGTH(TRIM(T2.Descr))
        when 0 then T1.Name
        else T2.Descr
    end
from TableOne T1, TableTwo T2
order by 1, 2