2013-04-09 135 views
3

我不想为一个操作运行数百个SELECT查询,而只想运行一个大型查询,我希望能够缓解我的服务器上的负载。MySQL Multiple Select,Where Where子句

SELECT (
(SELECT link_type_id FROM connections WHERE (node_to_id = '0' AND node_from_id = '1') OR (node_from_id = '1' AND node_to_id = '0')), 
(SELECT link_type_id FROM connections WHERE (node_to_id = '0' AND node_from_id = '2') OR (node_from_id = '2' AND node_to_id = '0')) 
) 

在这个查询中会有更多的SELECTS,但即使这两个都不起作用。当我运行此代码时出现错误:

Operand should contain 1 column(s). 

有什么建议吗?谢谢!

+0

您需要使用'UNION SELECT',失去外'SELECT',它不会真的是更有效的,但。 – doublesharp 2013-04-09 04:06:42

+0

你的选择标准是什么? '(node_to_id ='0'AND node_from_id ='1')OR(node_from_id ='1'AND node_to_id ='0')'似乎没有区别..两个选项都是一样的 – 2013-04-09 04:07:40

+0

@doublesharp效率更低,更多我想减少查询数据库的次数。 – user1114864 2013-04-09 07:09:34

回答

7

你可以试试下面可能是,但你可能需要UNION

SELECT link_type_id FROM connections 
WHERE (node_to_id = '0' AND node_from_id = '1') 
OR (node_from_id = '1' AND node_to_id = '0') 
UNION 
SELECT link_type_id FROM connections 
WHERE (node_to_id = '0' AND node_from_id = '2') 
OR (node_from_id = '2' AND node_to_id = '0') 
+0

你有试过吗? – shola 2013-04-09 04:46:36

3

这是由列外的括号引起的。即使是一些简单:

SELECT ((SELECT 1), (SELECT 1)) 

会产生这个错误 - 问题是MySQL只能显示每...好...列一列,整个()包装一列。如果您删除了外部圆括号,它将在单独的列中显示每个SELECT