Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中选择列而不使用子查询_Mysql_Subquery - Fatal编程技术网

在mysql中选择列而不使用子查询

在mysql中选择列而不使用子查询,mysql,subquery,Mysql,Subquery,我想从表“A”中选择一些记录,但不在表“B”中的记录 例如。。。 桌子是 A{A_ID, A_Date, A_Price}; B{B_ID, A_ID}; 我想从表“A”中选择具有主键A\u ID的记录,但仅选择那些在连接主键A\u ID上的两个表时不是表“B”的记录。 我可以用查询来做这件事 select * from A where A_ID not in (select A_ID from B) 但我的问题是子查询。因为运行时间太长,如果数据量大 所以我想不使用子查询运行它。 请帮忙

我想从表“A”中选择一些记录,但不在表“B”中的记录

例如。。。 桌子是

A{A_ID, A_Date, A_Price};

B{B_ID, A_ID};
我想从表“A”中选择具有主键A\u ID的记录,但仅选择那些在连接主键A\u ID上的两个表时不是表“B”的记录。 我可以用查询来做这件事

select * from A where A_ID not in (select A_ID from B)
但我的问题是子查询。因为运行时间太长,如果数据量大

所以我想不使用子查询运行它。

请帮忙

尝试以下查询:

select * from TableA A
where not exists(select 1 from TableB where A_ID = A.A_ID)


如果数据量大,请张贴示例两个查询都需要太多时间。第一个查询包含子查询,解决方案必须没有子查询,因为它需要更多的时间来运行这些表上有索引吗?如果不是,这就是方法。是的,但不是在A_ID和B_ID上。你也应该在这些列上创建索引。那么我的查询应该可以很好地工作(而且
不存在
不存在
更可取)。@narhari如果答案有帮助,你应该接受,如果你愿意,你可以选择向上投票:)
select A.* from TableA A left join TableB B
on A.A_ID = B.A_ID
where B.B_ID is null