MySQL多选,多个子句

时间:2013-04-09 04:04:00

标签: mysql select

我不想为一个操作运行数百个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).

有什么建议吗?谢谢!

2 个答案:

答案 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