2014-02-11 2 views
0

я пытаюсь с SQLite выберите оператор запроса, как показано ниже:Sqlite, где положение с несколькими значениями оператора выбора

SELECT IndicatorText 
FROM Table 
where IndicatorID in('13','25','64','52','13','25','328') 
     AND RubricID in('1','1','1','1','1','1','6') 

Это дает выход, но повторяющиеся значения не отображаются. Я хочу отображать все значения IndicatorText, даже если он повторяется.

Пожалуйста, помогите мне с этим запросом.

+0

Я абсолютно уверен, что должен отображать дубликаты. Есть возможность использовать ключевое слово 'DISTINCT' или' ALL' после 'SELECT', но' ALL' является значением по умолчанию, поэтому этот эффект должен иметь такой же эффект. Проверьте, что вы читаете все ответы на свой стол, а не только первый? И что ваши данные, безусловно, там? – Chris

+0

Кроме того, вам не нужны дубликаты в 'И RubricID '(' 1 ',' 1 ',' 1 ',' 1 ',' 1 ',' 1 ',' 6 ')' - just 'AND RubricID in ('1', '6') 'должен выполнять эту работу. И я бы предположил, что вам не нужны котировки вокруг чисел, если вы сохраняете их как типы Number, а не строки/символы? – Chris

+0

На самом деле моя задача - получить все IndicatorText для IndicatorID = 13 и RubricID = 1, IndicatorID = 25 и RubricID = 1 ... так далее. Я хочу текст, в котором совпадают как IndicatorID, так и categoryId. У меня есть все значения в базе данных, которые мне нужны. – user2903572

ответ

0

Два условия IN оцениваются индивидуально.

Чтобы проверить оба значения сразу, вы можете объединить их, так что у вас есть одна строка для сравнения:

SELECT IndicatorText 
FROM MyTable 
WHERE IndicatorID || ',' || RubricID IN (
     '13,1', '25,1', '64,1', '52,1', '13,1', '25,1', '328,6') 

Однако, делая эту операцию на значения столбцов позволяет оптимизатору запросов с помощью индексов , поэтому этот запрос будет медленным, если таблица большая. Чтобы разрешить оптимизацию, создать временную таблицу с заданными значениями, и присоединиться, что с исходной таблицей:

SELECT IndicatorText 
FROM MyTable 
NATURAL JOIN (SELECT 13 AS IndicatorID, 1 AS RubricID UNION ALL 
       SELECT 25,    1    UNION ALL 
       SELECT 64,    1    UNION ALL 
       SELECT 52,    1    UNION ALL 
       SELECT 13,    1    UNION ALL 
       SELECT 25,    1    UNION ALL 
       SELECT 328,    6) 
Смежные вопросы