Ответ 1
select * from tblFruit where
tblFruit_ID in (Select max(tblFruit_ID) FROM tblFruit group by tblFruit_FruitType)
Я пытаюсь написать SQL-запрос, который выбирает несколько столбцов из таблицы с отдельным оператором только в одном столбце.
Таблица проста. Столбцы:
tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName
int NVarChar Text
Я пытаюсь выбрать все tblFruit_FruitType с их соответствующим tblFruit_ID.
Я пробовал:
Select Distinct(tblFruit_FruitType), tblFruit_ID FROM tblFruit
- возвращает все результаты, а не только отдельные
Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType
-Errors with Column tblFruit_ID недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType, tblFruit_ID
- возвращает все результаты, а не только отдельные
Я также проверил эти похожие сообщения и не смог заставить ничего работать: (
mySQL выберите один столбец DISTINCT с соответствующими другими столбцами
SQL Server Distinct Union для одного столбца
Надеюсь, этого достаточно для ответа.
Спасибо за ваше время!
EDIT (Пример данных и желаемых результатов)
tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName
int NVarChar Text
1 Citrus Orange
2 Citrus Lime
3 Citrus Lemon
4 Seed Cherry
5 Seed Banana
Результаты:
1 Citrus
4 Seed
select * from tblFruit where
tblFruit_ID in (Select max(tblFruit_ID) FROM tblFruit group by tblFruit_FruitType)
Вы должны использовать агрегатную функцию в столбцах, против которых вы не группируете. В этом примере я произвольно выбрал функцию Min. Вы комбинируете строки с тем же значением FruitType
. Если у меня есть две строки с тем же значением FruitType
, но разные значения Fruit_Id
, например, что должна делать система?
Select Min(tblFruit_id) As tblFruit_id
, tblFruit_FruitType
From tblFruit
Group By tblFruit_FruitType
Мне нужно было сделать то же самое и пришлось запросить запрос, чтобы получить результат
Я установил свой первый запрос для ввода всех идентификаторов из таблицы и всей другой информации, необходимой для фильтрации:
SELECT tMAIN.tLOTS.NoContract, tMAIN.ID
FROM tMAIN INNER JOIN tLOTS ON tMAIN.ID = tLOTS.id
WHERE (((tLOTS.NoContract)=False));
Сохраните это как Q04_1 -0, это вернуло 1229 результатов (имеется 63 уникальных записей для запроса - тогда с несколькими LOT)
SELECT DISTINCT ID
FROM q04_1;
Сохранено, что как q04_2
Затем я написал другой запрос, который привел необходимую информацию, связанную с идентификатором
SELECT q04_2.ID, tMAIN.Customer, tMAIN.Category
FROM q04_2 INNER JOIN tMAIN ON q04_2.ID = tMAIN.ID;
Работала с удовольствием и получила именно то, что мне было нужно - 63 уникальные записи, возвращенные с деталями клиента и категории.
Вот как я работал над этим, так как я не мог получить группу. Работая вообще, хотя я довольно "мочу за уши" weith SQL (так что будьте осторожны и конструктивны с обратной связью)