LIKE и ORDER BY: поиск по обрывку

Целая картотека, а улика на руках — обрывок наклейки и одна фраза свидетеля: «перед самым закрытием». Ни имени, ни точного часа. Прочесать всё глазами нельзя. Ищем по образцу, потом раскладываем по времени.

Обрывок — это ещё не имя. LIKE ищет по кусочку, знак % значит «что угодно вместо этого».

SELECT *
FROM receipts
WHERE item LIKE '%сапф%';

Список сузился — почему этого мало?

Список сузился, но лежит вповалку. Раскладываем по времени — от последнего к первому: последним видели то, что случилось последним.

SELECT *
FROM receipts
WHERE item LIKE '%сапф%'
ORDER BY time DESC;
itemtime
сапфировый кулон22:58
сапфировый браслет21:40
сапфировая брошь20:15
«Порядок — не украшение. Порядок — это разница между „последний“ и спором, кто был последним.»

Дальше — верхушка списка: LIMIT берёт первые строки уже упорядоченной очереди. Без ORDER BY впереди него это была бы не верхушка, а кто попался под руку — тот капкан разобран отдельным уроком.

Где в этом запросе прячется пропавший вечер?

Второй капкан — тише и злее. Окно времени берёт BETWEEN, а оно включает обе границы буквально.

WHERE time BETWEEN '1983-11-02' AND '1983-11-03'
-- граница '1983-11-03' = ровно полночь,
-- всё после неё в тот же день — мимо

Если границы — календарные даты без часов, весь последний день после полуночи проваливается из выдачи. Полночь — не конец суток, а их начало. Полтора часа перед закрытием решают дело, а из отчёта их вымело незаметно.

WHERE time >= '1983-11-02'
  AND time <  '1983-11-04'
-- полуоткрытый интервал — ничего не теряет
«Улика не пропадает из жизни. Она пропадает из вашего запроса — и вы не заметите недостачи, пока не пересчитаете сами.»

На работе так теряют «последний день квартала» в любом отчёте с BETWEEN по датам. Раскладка по образцу и по времени — второй инструмент после сита: она не находит виновного, она строит очередь, в которой видно, кто был последним.

Обрывок наклейки и час закрытия — так начинается почти каждое дело в архиве. Возьмите любое и разложите улики по порядку своими руками.

$0
тащи карточки за верхнюю кромку · «+ стикер» · «🧵 нить» — клик по двум

ЛОТОК УЛИК

во вкладке SQL найди подозреваемых и жми «+ доска»

НА ПРОВЕРКУ

теории из «Заметок» отправляются сюда — подтверди на доске или удали
Ctrl+Enter · «+ доска» на строке — выбрать поля и перенестипиши запрос, я подожду
Результат появится здесь.

Картотека

Заметки

Факты

Теории на проверку

Подсказки

◆ РЕЖИМ АРХИВАРИУСАуправление картотекой дел · не виден игроку