我不确定我在尝试将不在子查询中转换为加入的查询中缺少什么。
这是我的原始查询,非常适合我:
select
battery_id
from
battery_price
where
clinic_id = 2
and battery_id not in
(
select battery_id
from battery_price
where clinic_id = 4569
)
;
这是我正在尝试的查询,但它不起作用,因为它没有给我任何空字段:
select leftq.battery_id as leftf, rightq.battery_id as rightf
from
(
select
battery_id
from
battery_price
where
clinic_id = 2
) as leftq
left join
(
select battery_id
from battery_price
where clinic_id = 4569
) as rightq
on rightq.battery_id = leftq.battery_id
;
这是表架构:
CREATE TABLE `battery_price` (
`battery_price_id` int(11) NOT NULL AUTO_INCREMENT,
`clinic_id` int(11) NOT NULL DEFAULT '0',
`battery_id` int(11) NOT NULL DEFAULT '0',
`retail_price` decimal(10,2) NOT NULL DEFAULT '0.00',
`actual_cost` decimal(10,2) NOT NULL DEFAULT '0.00',
`provider_cost` decimal(10,2) NOT NULL DEFAULT '0.00',
`in_use` tinyint(1) NOT NULL DEFAULT '1',
`sales_tax_id1` int(11) NOT NULL DEFAULT '0',
`sales_tax_id2` int(11) NOT NULL DEFAULT '0',
`sales_tax_id3` int(11) NOT NULL DEFAULT '0',
`sales_tax_id4` int(11) NOT NULL DEFAULT '0',
`sales_tax_id5` int(11) NOT NULL DEFAULT '0',
`sales_tax_category_id` int(11) NOT NULL DEFAULT '0',
`price_locked` tinyint(1) NOT NULL DEFAULT '1',
`item_number` varchar(50) NOT NULL DEFAULT '',
`last_update` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`last_edit_user_id` int(11) DEFAULT '0',
PRIMARY KEY (`battery_price_id`),
KEY `battery_id` (`battery_id`),
KEY `battery_id_2` (`battery_id`),
KEY `battery_id_3` (`battery_id`)
) ENGINE=MyISAM AUTO_INCREMENT=2639 DEFAULT CHARSET=latin1
最佳答案
试试这个:
select
t.battery_id
from
battery_price t
left outer join battery_price u
on t.battery_id = u.battery_id
and u.clinic_id = 4569
where t.clinic_id = 2
and u.battery_id is NULL
关于mysql - 转换不在子查询中加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49372576/