从表A中选择某些列并插入表B

问题描述:

尝试从CART表中选择某些数据列并将其添加到ORDER表中。我创建了一个插入顺序方法,它将从CART复制一些列并添加到ORDER表中。但是由于我在ORDER中有一列是“product_stats”,所以引发了一个错误。不是将“product_stats”添加到CART,而是从CART复制某些列时,如何查询ORDER中的product_stats将被忽略? 任何帮助,将不胜感激!从表A中选择某些列并插入表B

PS:我不是很熟悉SQL查询。

ORDER和CART表:

sqLiteHelper.queryData("CREATE TABLE IF NOT EXISTS cart (cart_id INTEGER PRIMARY KEY AUTOINCREMENT, product_image BLOG, product_name TEXT, product_stall TEXT, product_price TEXT)"); 

sqLiteHelper.queryData("CREATE TABLE IF NOT EXISTS orderT (order_id INTEGER PRIMARY KEY AUTOINCREMENT, product_name TEXT, product_stall TEXT, product_price TEXT, product_stats TEXT)"); 

插入订购方法:

public void insertOrder(){ 
    SQLiteDatabase database = this.getWritableDatabase(); 
    database.execSQL("insert into orderT select cart_id, product_name, product_stall, product_price from cart"); 
    database.close(); 
} 

错误抛出:

Caused by: android.database.sqlite.SQLiteException: 4 values for 5 columns (code 1): , while compiling: insert into orderT (order_id, product_name, product_stall, product_price, product_stats) select cart_id, product_name, product_stall, product_price from cart 

你可以设置默认值(例如,空)在您的查询product_stats:

database.execSQL("insert into orderT select cart_id, product_name, 
        product_stall, product_price, '' as product_stats 
        from cart"); 
+0

什么快速解决办法!从来没有想过,谢谢! – phosporus

你笑uld在您的语句中指定列名称如下:

INSERT INTO table_name (column1,column2,column3,...) 
    VALUES (value1,value2,value3,...); 

通过指定列名可以省略不希望填充的列。