如何在SQLite中拼接两个不同表中的字段?
没问题,针对你提到的两种表结构场景,我给你整理了对应的SQL实现,直接就能满足把两个表的Name字段拼接成XXX-XXX格式的需求:
场景1:两个表均以Id作为关联字段
因为两个表的Id完全匹配,我们用INNER JOIN关联两张表,再用对应数据库的字符串拼接函数把两个Name连起来就行,主流数据库的写法如下:
MySQL/MariaDB
SELECT t1.Id, CONCAT(t1.Name, '-', t2.Name) AS Name FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Id = t2.Id;
PostgreSQL
SELECT t1.Id, t1.Name || '-' || t2.Name AS Name FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Id = t2.Id;
SQL Server
SELECT t1.Id, t1.Name + '-' + t2.Name AS Name FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Id = t2.Id;
场景2:表2更新为Table1_id作为关联字段
这种情况只是关联条件变了,核心逻辑不变,只需要把JOIN的匹配条件改成t1.Id = t2.Table1_id就行:
MySQL/MariaDB
SELECT t1.Id, CONCAT(t1.Name, '-', t2.Name) AS Name FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Id = t2.Table1_id;
PostgreSQL
SELECT t1.Id, t1.Name || '-' || t2.Name AS Name FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Id = t2.Table1_id;
SQL Server
SELECT t1.Id, t1.Name + '-' + t2.Name AS Name FROM Table1 t1 INNER JOIN Table2 t2 ON t1.Id = t2.Table1_id;
小提示
由于你明确说两个表的关联ID完全一致,INNER JOIN是最适合的,它会精准匹配每一对关联记录,不会出现多余或遗漏的结果。如果后续有ID不匹配的场景,可以根据实际需求换成LEFT JOIN(保留表1所有记录)或RIGHT JOIN(保留表2所有记录)。
内容的提问来源于stack exchange,提问作者Bloggrammer
相关产品推荐
相关产品推荐

