Следующий запрос возвращает много правильных строк, но не возвращает строку для seed = '1985.00-Miller-13' (есть и другие, но это только один пример):SQL Query, похоже, возвращает неполный результат
SELECT g.dam_alias "Seed"
FROM genetic g LEFT OUTER JOIN (genetic g1d)
ON (g.dam_alias = g1d.genetic_alias)
GROUP BY g1d.dam_alias , g1d.sire_alias;
Однако, если я добавлю предложение WHERE к запросу, указав строку, которая, как мне кажется, отсутствует, появляется. Вот измененный запрос:
SELECT g.dam_alias "Seed"
FROM genetic g LEFT OUTER JOIN (genetic g1d)
ON (g.dam_alias = g1d.genetic_alias)
WHERE g.dam_alias = '1985.00-Miller-13' -- this is the added line
GROUP BY g1d.dam_alias , g1d.sire_alias;
Если мой первоначальный запрос действительно не должен был возвратить строку для затравки «1985,00-Миллер-13», я ожидал бы второй запрос не вернуть ни одной строки.
Сначала я подозревал, что мои ключи/индексы были повреждены, поэтому я сделал дамп db и перестроен из полученного SQL-скрипта. Я реплицировал проблему, используя MYSQL v5.6 и MariasDB v 10.0.17
Я проверил данные вручную и просмотрел запрос на бумаге и не нашел ничего, что не соответствовало моим ожидаемым результатам.
Любые предложения были бы весьма полезными. Я могу предоставить любую дополнительную информацию/схему/данные, которые могут кому-то понадобиться.
Спасибо.
Спасибо вам всем, кто прокомментировал. Комментарии были заметны и были чрезвычайно полезны, когда я понял, что происходит и где моя ошибка. Добавление g.dam_alias в группу, разрешив проблему. Вот фиксированный запрос: – graybeard
SELECT, g.dam_alias "Seed" ИЗ Генетический г LEFT OUTER JOIN (генетический G1D) ON (g.dam_alias = g1d.genetic_alias) GROUP BY g.dam_alias, g1d.dam_alias, g1d.sire_alias ; – graybeard