Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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 如何在Sqlite中为一个表赋予优先级_Java_Sqlite_Union - Fatal编程技术网

Java 如何在Sqlite中为一个表赋予优先级

Java 如何在Sqlite中为一个表赋予优先级,java,sqlite,union,Java,Sqlite,Union,我有两张桌子。在这些表中,我的站点id可能在其中一个或两个表中。如果我的stop id在B中不存在,它应该从A中选取。如果它在A中不存在,它应该从B中选取。如果stop id在两个表中都存在,那么我想优先考虑B并从B中检索行。下面的查询总是从B中返回值。您能帮我解决这个问题吗 String selectQuery = "SELECT " + stop_id + "," + name + "," + latitude + "," + longitude + ",

我有两张桌子。在这些表中,我的站点id可能在其中一个或两个表中。如果我的stop id在B中不存在,它应该从A中选取。如果它在A中不存在,它应该从B中选取。如果stop id在两个表中都存在,那么我想优先考虑B并从B中检索行。下面的查询总是从B中返回值。您能帮我解决这个问题吗

String selectQuery = "SELECT " 
    + stop_id + "," 
    + name + ","
    + latitude + ","
    + longitude + ","

    +"1 as "+priority
    +" FROM "+ A

    +" UNION SELECT "
    + stop_id + "," 
    + name + ","
    + latitude + ","
    + longitude + ","
    +"2 as "+priority
    +" FROM "+ B
    +" WHERE " + stop_id + " =? "
    +" ORDER BY "+priority
    +" LIMIT 1 ";


    Cursor cursor = db.rawQuery(selectQuery, new String[] {id});

在您的
UNION ALL
中,您应该将
WHERE
子句应用于两个
SELECT
s;当前代码仅将条件应用于
B
侧,而
A
侧返回所有行<代码>限制1最后隐藏了这个问题

字符串串联不便于查看,但您应该在查询中传递两次
id
,并使用两个
占位符:

SELECT stop_id, name, latitude, longitude, 1 as priority
FROM A
WHERE stop_id = ?
UNION ALL
SELECT stop_id, name, latitude, longitude, 2 as priority
FROM B
WHERE stop_id = ?
ORDER BY priority DESC
LIMIT 1

我刚想出来,是来告诉你的,但谢谢你的回答。=)