我不想为一个操作运行数百个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).
有什么建议吗?谢谢!
答案 0 :(得分: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')
答案 1 :(得分:3)
这是由列外的括号引起的。甚至可以这么简单:
SELECT ((SELECT 1), (SELECT 1))
会产生这个错误 - 问题是MySQL每个...... well ...列只能显示一列,而整个()
包含一个列。如果删除外括号,它将在单独的列中显示每个SELECT
。