0

我收到错误“操作数应包含 1 列”。

是的,我尝试将 1 列与 3 列进行比较,那么我想要实现的目标可能吗?

明确的例子:我有一个表格测试

 id   profile_id  result_number
 10     1232        3
 10     3263        5
 10     2222        4
 10     2321        1 

实际上,我有 3 个查询,我想在一个查询中获取所有信息。首先,我得到profile_id 2222的结果号(返回4)

 SELECT `result_number` FROM test WHERE id=10 AND `profile_id`=2222

接下来,我得到了具有 result_number - 1 的 profile_id

SELECT `profile_id` FROM test
 WHERE id=10 AND `result_number` = 4 - 1

(返回 3)

最后,我得到了具有 result_number + 1 的 profile_id

SELECT `profile_id` FROM test WHERE id=10 AND `result_number` = 4 + 1 

(返回 5)

预期结果:

profile_id
    3263
    2222
    1232

有可能实现吗?

4

3 回答 3

3

JOIN如果它包含多行,您可以使用子查询:

SELECT profile_id
FROM test t, (
  SELECT result_number
  FROM test
  WHERE id = 10
  AND profile_id = 2222
) q
WHERE t.result_number BETWEEN q.result_number-1 AND q.result_number+1
AND id = 10
ORDER BY t.result_number DESC

演示:http ://sqlfiddle.com/#!2/6b922/1

于 2013-11-13T20:19:57.220 回答
0

我认为这会做你想要的:

select *
from test 
where id=10 and ( result_number= 4 or result_number=4-1 or result_number = 4+1)
于 2013-11-13T20:19:40.587 回答
0
with a  as
(
SELECT `result_number`, profile_id FROM test WHERE id=10 AND `profile_id`=2222
)

SELECT PROFILE_ID FROM A
UNION
SELECT B.PROFILE_ID FROM TEST AS B, A WHERE B.RESULT_NUMBER = (A.RESULT_NUMBER - 1)
UNION
SELECT C.PROFILE_ID FROM TEST AS C, A WHERE C.RESULT_NUMBER = (A.RESULT_NUMBER + 1)
于 2013-11-13T20:16:20.907 回答