假设我有一张桌子
id value
------ ---------
10 123
10 422
11 441
11 986
12 674
13 648
我需要一个查询,它只返回那些有2个或更多与之关联的值的id。因此,在这种情况下,它只返回ID 10& 11,但我需要记录。
所以结果如下:
id value
------ ---------
10 123
10 422
11 441
11 986
谢谢。
答案 0 :(得分:3)
select a2.*
from MyTable a2
inner join
(
select a1.id
from MyTable a1
group by a1.id
having count(*) > 1
) a3
on a3.id = a2.id
答案 1 :(得分:0)
假设可以在(id,value)...
上形成一个UNIQUE KEYSELECT DISTINCT x.*
FROM my_table x
JOIN my_table y
ON y.id = x.id
AND y.value <> x.value
如果无法在(id,value)上形成UNIQUE KEY,那么这不是严格的RDBMS意义上的表。
答案 2 :(得分:0)
您可以使用此查询:
if(is_page('test.php') && !isset($_GET['r'])){
if(!headers_sent()){
header("Refresh: 5;url='http://zasite.com/test.php?r=1'");
} else {
echo '<script>window.setTimeout(function () {location.href="http://zasite.com/test.php?r=1";}, 5000);</script>';
}
}
答案 3 :(得分:0)
对于mysql 8+或mariadb 10.2+,您可以使用计数窗口功能:
select id, value
from (
select id, value, count(id) over (partition by id) as num_values
from sometable
) foo
where num_values > 1;