Akr*_*ram 1 mysql sql mysql-error-1241
我有一个SQL查询的问题
这是我的查询:
SELECT `rooms`.*
FROM `rooms`
WHERE (`rooms`.`room_id` NOT IN (
SELECT *
FROM `reservations` `res`
WHERE ('2012-05-03' NOT BETWEEN res.expected_checkin_date
AND res.expected_checkout_date)
AND ('2012-05-08' NOT BETWEEN res.expected_checkin_date
AND res.expected_checkout_date)))
Run Code Online (Sandbox Code Playgroud)
问题是当第二个select返回null时,它显示以下错误:
#1241 - Operand should contain 1 column(s)
有谁能够帮我?
EDIT
当我运行这个查询时,它显示所有行甚至包含第二个内部的那个select
我不知道为什么?
SELECT `rooms`.*, `type`.*, `status`.* FROM `rooms` INNER JOIN `room_types` AS `type` ON `type`.`room_type_id` = `rooms`.`room_type_id` AND `type`.`num_beds` >= 1 AND type.room_type_id=2 INNER JOIN `room_statuses` AS `status` ON `status`.`room_status_id` = `rooms`.`room_status_id` WHERE (`rooms`.`room_id` NOT IN (SELECT `res`.`room_id` FROM `reservations` `res` WHERE (res.expected_checkin_date >= '2012-05-01' AND res.expected_checkin_date < '2012-05-31') AND (res.expected_checkout_date >= '2012-05-31' AND res.expected_checkout_date < '2012-05-31')))
Run Code Online (Sandbox Code Playgroud)
我想你想要的东西
SELECT `reservations`.`room_id` FROM `reservations`
Run Code Online (Sandbox Code Playgroud)
对于子选择,因为room_id您正在与NOT IN运营商匹配.
| 归档时间: |
|
| 查看次数: |
1244 次 |
| 最近记录: |