尝试从CART表中选择某些数据列并将其添加到ORDER表中。我创建了一个插入顺序方法,它将从CART复制一些列并添加到ORDER表。但是抛出了一个错误,因为我在ORDER中有一个列是“product_stats”。而不是向CART添加“product_stats”,如何以这样的方式进行查询:从CART复制某些列时,ORDER中的product_stats将被忽略? 任何帮助,将不胜感激!
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)");
插入ORDER方法:
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
答案 0 :(得分:0)
您应该在语句中指定列名,如下所示:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
通过指定列名,您可以省略您不想填写的列。
答案 1 :(得分:0)
您可以在查询中为product_stats设置默认值(例如,空):
database.execSQL("insert into orderT select cart_id, product_name,
product_stall, product_price, '' as product_stats
from cart");