我有2个表分别命名标签5,标签。
我想比较这两列数据和显示之间的差异。
与下面相同,我在sqlite查询中需要它。
当前编码。
public Cursor getLotsPerCustomer1(long name) {
SQLiteDatabase db = this.getReadableDatabase();
String whereclause = KEY_NAME + "=?";
String[] whereargs = new String[] {
String.valueOf(name)
};
return db.query(TABLE_LABELS, null, whereclause, whereargs, null, null, ROUTE);
}
我想要与以下相同的sqlite格式。请告知。
select t1.route from labels t1
left
join labels5 t2 on t1.route = t2.number
where t2.number is null
涉及两个条件。
第一个条件是检查表“ customer”,然后从表标签中搜索匹配结果,此查询可以正常工作。
public Cursor getLotsPerCustomer1(long name) {
SQLiteDatabase db = this.getReadableDatabase();
String whereclause = KEY_NAME + "=?";
String[] whereargs = new String[] {
String.valueOf(name)
};
return db.query(TABLE_LABELS, null, whereclause, whereargs, null, null, ROUTE);
}
第二个条件是, 通过第一个条件之后,它还应该与我打过的表“ labels5”进行比较。感谢您的建议。
表客户:
CREATE TABLE "customer" (
"_id"
TEXT,
"customer_name"
TEXT
);
表标签
CREATE TABLE "labels" (
"sno" INTEGER,
"route" TEXT,
"id" TEXT,
"_id" TEXT
);
表标签5
CREATE TABLE "labels5" (
"id3" INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
"number" TEXT NOT NULL UNIQUE,
"outletname" TEXT,
"sunday" INTEGER,
"monday" INTEGER,
"tuesday" INTEGER,
"wednesday" INTEGER,
"thursday" INTEGER,
"saturday" INTEGER,
"closed" INTEGER,
"calling" TEXT,
"week" INTEGER
);
答案 0 :(得分:0)
您可以使用rawQuery()
来做到这一点:
public Cursor getRoutes(long name) {
SQLiteDatabase db = this.getReadableDatabase();
String sql = "select t1.route from labels t1 left join labels5 t2 on t1.route = t2.number where t2.number is null";
return db.rawQuery(sql, null);
}
答案 1 :(得分:0)
从一个表中获取不在另一个表中的值的更好方法是使用EXCEPT
:
SELECT route FROM labels
EXCEPT
SELECT number FROM labels5;
答案 2 :(得分:0)
select customer_name as FirstTable,route as SecondTale,number as ThirdTable
from customer,labels,labels5
where customer._id=labels._id AND labels.route=labels5.number