MySQL Multiple Select,Where Where子句
问题描述:
我不想为一个操作运行数百个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).
有什么建议吗?谢谢!
答
你可以试试下面可能是,但你可能需要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
答
这是由列外的括号引起的。即使是一些简单:
SELECT ((SELECT 1), (SELECT 1))
会产生这个错误 - 问题是MySQL只能显示每...好...列一列,整个()
包装一列。如果您删除了外部圆括号,它将在单独的列中显示每个SELECT
。
您需要使用'UNION SELECT',失去外'SELECT',它不会真的是更有效的,但。 – doublesharp 2013-04-09 04:06:42
你的选择标准是什么? '(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
@doublesharp效率更低,更多我想减少查询数据库的次数。 – user1114864 2013-04-09 07:09:34