mysql查询两个表


mysql query on two tables

我可以使用哪个SELECT查询仅显示cars WHERE bookingsstatus<>1

因此在下表中carsid(1、3、4、6)将仅显示为结果

我被这个问题卡住了,或者这有什么好处:

SELECT * FROM `cars` as `C` INNER JOIN `bookings` AS `B` ON `C`.`id` = `B`.`id` ....?

cars

  id | name
  -- | -------------
  1  | Car 1
  2  | Car 2
  3  | Car 3
  4  | Car 4
  5  | Car 5
  6  | Car 6

bookings

id | car_id | status
-- | ------ | ------
1  | 1      | 0
2  | 2      | 1
3  | 2      | 2
4  | 1      | 0
5  | 5      | 1

编辑:很抱歉,我在这里不清楚,我也想把其他的列为结果,即使它们不在bookings

试试这个:

SELECT * FROM `cars` as `C` INNER JOIN `bookings` AS
 `B` ON `C`.`id` = `B`.`id` where `B`.`status` <> 1

如果你不想要来自不在预订中的汽车的记录,可以试试这个:

SELECT * FROM `Cars` as `C` Right JOIN `Booking` AS
 `B` ON `C`.`id` = `B`.`id`

这将只显示汽车

SELECT c.name FROM `cars` as `C` INNER JOIN `bookings` AS
     `B` ON `C`.`id` = `B`.`id` where `B`.`status` != 1

尝试这个

SELECT * FROM `cars` C, `bookings` B WHERE C.id=B.car_id AND B.status!=1

试试这个。。。

SELECT * FROM cars C LEFT JOIN bookings B ON C.id = B.car_id  WHERE B.status <> 1

假设bookings表中的car_idcars表中的id是同一列。。。

SELECT A.* from cars A
inner join bookings B on A.id=B.car_id
where b.status<>1;

使用此查询解决问题

SELECT * FROM `cars` WHERE `id` NOT IN  (SELECT `B`.`car_id` FROM `cars` AS `C` INNER JOIN `bookings` AS `B` ON `C`.`id` = `B`.`car_id` WHERE `B`.`status` = 1)

感谢大家,这对您的回答有很大帮助

SELECT A.* , B.* FROM cars A, bookings B WHERE B.car_id=A.id AND B.status <> 1