Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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 - Fatal编程技术网

Java 从选择中排除交叉连接结果*

Java 从选择中排除交叉连接结果*,java,sql,Java,Sql,我得到以下错误 Error Code: 1060. Duplicate column name 'app_id' 只有当我尝试包含所有结果时才会发生这种情况(因为有两个应用程序id)。我可以通过指定哪个表或执行“application.*”将app_id从key_表中排除 application.*唯一的问题是存在ENGINE=MEMORY不支持的文本字段。MySQL通常在引用“”时忽略此文本字段,但在引用“tablename”时不忽略此文本字段 有人能给我一个简单的解决办法吗 CREATE

我得到以下错误

Error Code: 1060. Duplicate column name 'app_id'
只有当我尝试包含所有结果时才会发生这种情况(因为有两个应用程序id)。我可以通过指定哪个表或执行“application.*”将app_id从key_表中排除

application.*唯一的问题是存在ENGINE=MEMORY不支持的文本字段。MySQL通常在引用“”时忽略此文本字段,但在引用“tablename”时不忽略此文本字段

有人能给我一个简单的解决办法吗

CREATE TEMPORARY TABLE pparsreporting.CurrentApplications ENGINE=MEMORY
(
SELECT *, getApplicationsForRespID.app_id2 AS app_id2,
planning_scheme.markus_ra, planning_scheme.metro_or_rural

FROM application
INNER JOIN key_table ON key_table.app_id = application.app_id
INNER JOIN planning_scheme ON planning_scheme.ps_code = application.planning_scheme

CROSS JOIN 
(
    SELECT key_table.app_id AS app_id2, planning_return.resp_authority AS resp_id
    FROM key_table
    INNER JOIN planning_return ON key_table.return_id = planning_return.return_id

)getApplicationsForRespID

WHERE application.app_id = getApplicationsForRespID.app_id2
AND key_table.is_current = 1
))


从pparsreporting.CurrentApplications中选择*我必须循环遍历每个表名并排除我不想要的表名。凌乱我知道,但它的工作

String EachTable = "";
    Statement GetTableNames = mDatabaseConnection.createStatement();
    ResultSet rs = GetTableNames.executeQuery("SELECT * FROM pparsdb.application LIMIT 1");
    ResultSetMetaData rsmd = rs.getMetaData();
    int columnCount = rsmd.getColumnCount();

    // The column count starts from 1
    for (int i = 1; i < columnCount + 1; i++ ) 
    {
        EachTable += ",application." + rsmd.getColumnName(i);
    }

    System.out.println(EachTable);
字符串EachTable=“”;
语句GetTableNames=mDatabaseConnection.createStatement();
ResultSet rs=GetTableNames.executeQuery(“从pparsdb.application LIMIT 1中选择*);
ResultSetMetaData rsmd=rs.getMetaData();
int columnCount=rsmd.getColumnCount();
//列计数从1开始
对于(int i=1;i
为什么不指定每个字段名呢?因为有很多字段名。我最好的建议是,写一次就可以了:)没有任何方法可以选择*减去一列。如果你真的不想输入,你可以使用group_concat with information_schema来复制和粘贴…还有其他一千列(我没有设计它),还有一些新字段正在添加,但我不知道名称。