Порядок SQL-запросов - PullRequest
0 голосов
/ 05 мая 2018

Я разработчик для iOS, и у меня нет абсолютно никакого опыта работы с базами данных SQL. Однако я использую следующий запрос для получения некоторой информации:

INSERT INTO search ( packageID )
    SELECT RowID
    FROM packages
    WHERE name LIKE ? OR description LIKE ?
    ORDER BY %@ ASC

(что %@ это просто строка Objective-C NSString).

У меня вопрос, есть ли в любом случае порядок, в котором результаты, возвращаемые из первого WHERE (WHERE name LIKE ?), превышают результаты, возвращаемые вторым WHERE?

Большое спасибо и извините за невежество!

1 Ответ

0 голосов
/ 05 мая 2018

Если вы хотите дать одному условию приоритет над другим, вы можете выразить это в ключах для order by:

SELECT RowID
FROM packages
WHERE name LIKE ? OR description LIKE ?
ORDER BY (CASE WHEN name LIKE ? THEN 1 ELSE 2 END),
          %@ ASC  -- not sure if this is needed or desired

Обратите внимание, что таблицы SQL представляют неупорядоченные наборы. Если вам действительно нужен набор результатов в этом порядке, выполните запрос SELECT. Попадая в таблицу, информация о заказе (теоретически) теряется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...