Я хочу выполнить следующий запрос в базе данных SQliteDatabase моего приложения .SQLite: вопрос сравнения «IN»
String sql = "Select col_1,row_id from Table1 where row_id IN(Select
row_id from Table2 where key = 'key')";
Я использую rawQuery
функцию SQLiteDataBase
класса для же. Проблема заключается в том, когда внутренний запрос возвращает 0 объектов, запрос запускает и возвращает 0 результатов. Но когда внутренний запрос возвращает Set, запрос не выполняется.
Можем ли мы иметь вложенные запросы, подобные этим в rawQuery? Что я здесь ?
Пожалуйста, помогите.
Спасибо.
Я не очень разбираюсь в базах данных, поэтому, пожалуйста, извините мое невежество. У меня есть два вопроса: 1. Являются ли JOINs лучше, чем вложенные запросы с точки зрения пространства и памяти? 2. Любая идея, почему вышеупомянутый запрос не работает на Android? Я попробовал его в браузере SQlite Database, и он работает. – Samuh
Базы данных обычно оптимизированы для запуска JOIN. Внутри большинство оптимизаторов запросов преобразуют ваш вложенный запрос в соединение. Без какого-либо сообщения об ошибке я не могу сказать, почему он не работает, когда подзапрос возвращает набор. Синтаксис правильный! – halfdan
+10. спасибо за ответ! – Samuh