如何在没有PHP的情况下从2个MySQL表构建一个新的MySQL表
我有两个表,我想合并到第三个表中,我想纯粹作为一个MySQL查询,而不是选择行并使用PHP while()构建第三个表 表1包含以下内容:如何在没有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
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