получить строку с максимальным идентификатором по отношению к другому внешнему ключу

0

У меня есть две таблицы: Car и Rent

+----------+-----------+---------+--------+
| pk_carid | fk_rentid | name    | status |
+----------+-----------+---------+--------+
| 1        | 1         | toyota  | gone   |
+----------+-----------+---------+--------+
| 2        | 2         | tata    | here   |
+----------+-----------+---------+--------+
| 3        | 3         | ferrri  | here   |
+----------+-----------+---------+--------+
| 4        | 1         | toyota  | here   |
+----------+-----------+---------+--------+
| 5        | 2         | tata    | gone   |
+----------+-----------+---------+--------+
| 6        | 3         | ferrrii | gone   |
+----------+-----------+---------+--------+

Я хочу просто получить запись, где pk_cardid - 4, 5 или 6, но не 1, 2 или 3.

Я пробовал следующий запрос, но он дает мне запись только последней строки, где pk_carid = 6.


SELECT c.cardid
       ,r.rentid
       ,c.name, 
FROM cars AS c 
     INNER JOIN rent AS r 
     ON r.rentid = c.carid
WHERE (c.carid =(SELECT MAX(c2.carid) Expr1 FROM cars c2 )) group by r.rentid
  • 0
    Так в принципе вы хотите показать автомобили, которые не арендованы?
  • 0
    @RaulCuth нет, на самом деле там только последние данные о состоянии погоды, которые они арендовали или нет, и мы знаем, что мы можем получить это, проверив последние первичные ключи соответствующих внешних ключей
Показать ещё 11 комментариев
Теги:

1 ответ

1
Лучший ответ

Это должно работать:

select cars.* from cars
join
(
   select max(carid) as id  
   from cars 
   group by rentid
)as maxCar on maxCar.id = cars.carid

или вы можете попробовать

select * from cars
where carid in
(
   select max(carid) as id  
   from cars 
   group by rentid
) 
  • 0
    он вернул мне 0 строк.
  • 0
    Является ли таблица, которую вы разместили в вашем вопросе, таблица автомобилей?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню