我有一个包含两个字段的表: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将返回零。
希望我已经说清楚了。提前致谢, 费。
答案 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)
我保留原文,因为它更容易理解,即使它只是伪代码。