Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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
Java 根据从另一个表中选择的结果在表中插入_Java_Sql_Liquibase - Fatal编程技术网

Java 根据从另一个表中选择的结果在表中插入

Java 根据从另一个表中选择的结果在表中插入,java,sql,liquibase,Java,Sql,Liquibase,我有两个名为Shop和Location 表Shop有一列name 表位置有一列说明 对于table shop的每一行,我希望在表位置插入一行,该行遵循以下结构: Location.description = Shop.name + "-Location" 因此,对于每个店铺,我想插入一个具有 description=Shop.name.concat("-Location") 请告诉我如何编写一个sql查询来解决此问题。您使用插入。选择。大概你想要这样的东西: INSERT INTO lo

我有两个名为
Shop
Location

  • Shop
    有一列
    name

  • 位置
    有一列
    说明

对于table shop的每一行,我希望在表位置插入一行,该行遵循以下结构:

Location.description = Shop.name + "-Location"
因此,对于每个店铺,我想插入一个具有

description=Shop.name.concat("-Location")

请告诉我如何编写一个sql查询来解决此问题。

您使用
插入。选择
。大概你想要这样的东西:

INSERT INTO location(description)
    SELECT DISTINCT CONCAT(s.name, '-Location')
    FORM shops s;
您还可以在许多数据库中使用
|
进行字符串连接:

INSERT INTO location(description)
    SELECT DISTINCT s.name || '-Location'
    FORM shops s;

请用您正在使用的数据库标记您的问题。我使用了您建议的内容,但是我得到了一个SQL错误,告诉您concat函数不可识别。因此,我将连接更改为如下操作:插入到位置(描述)中,从s中选择s.name | |'-location;它工作正常,非常感谢你的帮助help@BlaiseFeukouo . . .
concat()
是用于连接字符串的ANSI标准函数,但是大多数数据库都有自己的方法。当我回答这个问题时,我认为这个问题没有被数据库标记<代码>| |适用于许多数据库。好的。感谢@Gordon Linoff的回答。我目前正在使用Postgresql作为数据库。但是,我的应用程序应该可以与任何数据库一起工作,因为我使用的是JPA(eclipseLink)。因此,我在Liqbase变更集中编写的sql查询应该不依赖于所使用的数据库。请问,你认为我所采取的解决方案适合这种情况吗?