Я бы хотел, чтобы мой SQL-запрос возвращал строку, даже если в моем разделе IN нет соответствия строк.SQL: Я хочу, чтобы строка возвращалась с NULL, даже если нет совпадения с моим предложением IN.
Для Exemple этот запрос:
SELECT id, foo
FROM table
WHERE id IN (0, 1, 2, 3)
вернется:
id|foo
0|bar
1|bar
2|bar
3|null
Но вместо этого у меня есть (потому что ни одна строка с идентификатором 3):
id|foo
0|bar
1|bar
2|bar
я не смог чтобы найти этот трюк:
SELECT tmpTable.id, table.bar
FROM (
SELECT 0 as id
UNION SELECT 1
UNION SELECT 2
UNION SELECT 3
) tmpTable
LEFT JOIN
(
SELECT table.foo, table.id
FROM table
WHERE table.id IN (0, 1, 2, 3)
) table
on table.id = tmpTable.id
Есть ли лучший способ?
Бонус: Как заставить его работать с переменной списка myBatis?
К сожалению, ваш фокус в том, как хорошо, как он получает, по крайней мере в стандартном SQL. – dasblinkenlight
Как определяются значения в вашей позиции «in»? Можно ли загружать все значения, которые вы хотите отобразить в своем результирующем наборе, в отдельную таблицу и присоединиться к этому? Это общий шаблон, похожий на таблицу «Даты», которая содержит запись за каждый день, которая может сделать возвращаемые данные сгруппированы в день cinch (и указать, когда нет данных за этот день). – overslacked