3

我不想为一项操作运行数百个 SELECT 查询,而只想运行一个大查询,我希望这会减轻我的服务器上的负载。

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).

有什么建议么?谢谢!

4

2 回答 2

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')
于 2013-04-09T04:30:47.127 回答
3

这是由列外的括号引起的。甚至像这样简单的事情:

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

会产生这个错误——问题是 MySQL 只能显示一列每…好吧…列,并且整个()包裹一列。如果删除外括号,它将SELECT在单独的列中显示每个括号。

于 2013-04-09T04:11:47.187 回答