Php 如何使用附加条件sql选择重复行
我想选择所有与特定修复id匹配的重复记录Php 如何使用附加条件sql选择重复行,php,sql,select,where-clause,Php,Sql,Select,Where Clause,我想选择所有与特定修复id匹配的重复记录 *------*-------------*---------* | id time_stamp | fix_id | *------*-------------*---------* | 1 | 790 | 5679 | | 2 | 1000 | 245679 | | 3 | 1000 | 245679 | | 4 | 12 | 245679
*------*-------------*---------*
| id time_stamp | fix_id |
*------*-------------*---------*
| 1 | 790 | 5679 |
| 2 | 1000 | 245679 |
| 3 | 1000 | 245679 |
| 4 | 12 | 245679 |
| 5 | 790 | 5679 |
*------*-------------*---------*
我想返回id 2和3,我已经用下面的代码尝试过了,但是它返回了2、3和4所有具有相同修复id的记录
SELECT *
FROM odds
WHERE time_stamp IN (SELECT time_stamp
FROM odds
GROUP BY time_stamp
HAVING COUNT(time_stamp) > 1) and fix_id='245679'
这样做:
SELECT *
FROM odds
a inner join (SELECT time_stamp, fix_id
FROM odds
GROUP BY time_stamp, fix_id
HAVING COUNT(*) > 1) b on a.fix_id = b.fix_id and a.time_stamp = b.time_stamp
WHERE a.fix_id='245679'
我建议使用“不存在”:
在子查询中使用聚合是一个坏习惯,不管是否存在聚合都会起作用。聚合需要处理所有数据,而EXISTS/NOT EXISTS可以在第一个匹配记录处停止。我收到错误1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第3行“内部连接选择时间戳,修复不一致的id”附近使用的正确语法。同样,我用谷歌搜索它,发现内部连接应该在何处之前,但我不确定如何绝对,我没有借口。对不起,修好了
SELECT o.*
FROM odds o
WHERE EXISTS (SELECT 1
FROM odds o2
WHERE o2.time_stamp = o.time_stamp AND
o2.fix_id = o.fix_id AND
o2.id <> o.id
)
WHERE a.fix_id = 245679;