【MySQL】使用子查询

想要使用子查询,必须使用MySQL 4.1或更高级的版本。

利用子查询进行过滤

SELECT cust_name, cust_contact 
FROM customers 
WHERE cust_id IN (SELECT cust_id 
				  FROM orders 
				  WHERE order_num IN (SELECT order_num 
				  					  FROM orderitems 
				  					  WHERE prod_id = 'TNT2'));

在WHERE子句中使用子查询,应该保证SELECT语句具有与WHERE子句中相同数目的列。
不过使用子查询并不总是执行这种类型的数据检索的最有效的方法。

虽然子查询一般与IN操作符结合使用,但是也可以用于测试等于(=)和不等于(<>)等。

作为计算字段使用子查询

SELECT cust_name, 
	   cust_state, 
	   (SELECT COUNT(*)
	    FROM orders 
	    WHERE orders.cust_id = customers.cust_id) AS orders 
FROM customers 
ORDER BY cust_name;

相关子查询:涉及外部查询的子查询。

任何时候只要列名可能有多义性,就必须使用这种语法(表名和列名由一个句点分隔)。

请逐渐增加子查询来建立查询
首先,建立和测试最内层的查询。然后,用硬编码数据建立和测试外层查询,并且仅在确认它正常后才嵌入子查询。这时,再次测试它。对于要增加的每个查询,重复这些步骤。这样做仅给构造查询增加了一点点时间,但节省了以后(找出查询为什么不正常)的大量时间,并且极大地提高了查询一开始就正常工作的可能性。


版权声明:本文为qq_40948559原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。