MySQL检索对的数量

时间:2011-05-20 22:25:25

标签: mysql

我有一个包含两个字段的表:ID_From,ID_To。

现在这些字段填充如下:

ID_From    ID_To
  1000      2000           
  2000      1000            
  1000      5000            
  3000      2000            
  4000      3000
  5000      1000

我想要的是查询数据库的ID为1000,然后返回,有多少对。在这种情况下,它将返回2.使用ID 2000的Quering将返回1. ID 3000和4000将返回零。

希望我已经说清楚了。提前致谢, 费。

5 个答案:

答案 0 :(得分:2)

select count(*) from table_name t1 
join table_name t2 
on t1.ID_from = t2.ID_to
and t1.ID_to = t2.ID_from
where t1.ID_from = 1000

答案 1 :(得分:2)

SELECT COUNT(*)
FROM myTable a
  JOIN myTable b
    ON a.ID_To = b.ID_From
    AND a.ID_From = b.ID_To
WHERE a.ID_From = 1000 ;

答案 2 :(得分:1)

1000

SELECT COUNT(1) FROM my_table a 
INNER JOIN my_table b ON a.ID_From = b.ID_To
AND b.ID_From = a.ID_To
WHERE a.ID_From = 1000;

答案 3 :(得分:0)

SELECT COUNT(*) FROM tbl WHERE (ID_From >= 1000 AND 1000 <= ID_To) OR (ID_To >= 1000 AND 1000 <= ID_From);

答案 4 :(得分:-1)

SELECT COUNT(*)
FROM t
WHERE :value > MIN(ID_From, ID_to) AND :value_1 < MAX(ID_From, ID_to)
当然,

:value:value_1都会获得相同的值。

编辑:MySQL显然没有MIN / MAX,所以如果MIN:

你需要做IF(ID_from < ID_to, ID_From, ID_to)
SELECT COUNT(*)
FROM t
WHERE :value > IF(ID_From < ID_to, ID_From, ID_to) AND :value_1 < IF(ID_From < ID_to, ID_to, ID_From)

我保留原文,因为它更容易理解,即使它只是伪代码。