Моя целевая СУБД - Oracle и MySQL
SELECT
users.*
, hr_orders.position_label
, hr_orders.is_boss
, deps.label AS dep_label -- preprocessor removes AS when using Oracle
, users.id IN (?) AS show_on_top -- Oracle doesn't accept this IN thing
FROM
-- some joins here
WHERE
-- some filters
Можно ли дать кросс-СУБД эквивалент этого запроса?
UPDATE
Хорошо, это разрушает логику, парень до меня хотел всегда показывать некоторых пользователей сверху,
WHERE
users.fake = 0
AND (
users.id IN (?)
OR
-- some more detailed filters
)
ORDER BY
IF (users.id IN (?), 1, 2), users.label
где? это параметр, относящийся к топ-пользователям.
Это поле show_on_top необходимо для выделения верхних записей позже.
Поэтому, если я переместу IN в предложение where, будут выбраны только пользователи, показанные сверху, а не остальные.
Разделение запроса на две части и объединение списка пользователей в коде все еще выглядит мне некрасиво.