Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql查询col1是否有重复值,但col2是否不同 示例表布局_Php_Mysql - Fatal编程技术网

Php mysql查询col1是否有重复值,但col2是否不同 示例表布局

Php mysql查询col1是否有重复值,但col2是否不同 示例表布局,php,mysql,Php,Mysql,所以我想要拉取的是,每当col1重复它自己,但是col2是不同的,我还想只拉取最后一个小时的结果,所以对于示例表,一天的时间是4:00,查询的输出将是 ab 12 3:40 ab 13 3:50 试试这个: SELECT DISTINCT tbl1.col1, tbl1.col2, tbl1.col3 FROM tbl AS tbl1 INNER JOIN tbl AS tbl2 ON tbl1.col1 = tbl2.col1 AND tbl1.col2 != tbl2.

所以我想要拉取的是,每当col1重复它自己,但是col2是不同的,我还想只拉取最后一个小时的结果,所以对于示例表,一天的时间是4:00,查询的输出将是

ab 12 3:40  
ab 13 3:50  
试试这个:

SELECT DISTINCT tbl1.col1, tbl1.col2, tbl1.col3 
FROM tbl AS tbl1 INNER JOIN tbl AS tbl2 
    ON tbl1.col1 = tbl2.col1 AND tbl1.col2 != tbl2.col2
WHERE col3 >= DATE_ADD(NOW(), INTERVAL -1 HOUR)

如果我正确理解了你的问题,我认为以下几点可以满足你的需要:

mysql> select * from testTable;
+------+------+----------+
| col1 | col2 | col3     |
+------+------+----------+
| ab   |   12 | 02:20:00 | 
| cb   |   11 | 03:30:00 | 
| ab   |   12 | 03:40:00 | 
| cb   |   11 | 03:45:00 | 
| ab   |   13 | 03:50:00 | 
+------+------+----------+
5 rows in set (0.00 sec)

mysql> select col1, col2, MAX(col3) maxTime from testTable where col1='ab' group by col1, col2;
+------+------+----------+
| col1 | col2 | maxTime  |
+------+------+----------+
| ab   |   12 | 03:40:00 | 
| ab   |   13 | 03:50:00 | 
+------+------+----------+
2 rows in set (0.00 sec)
(编辑-根据评论中的澄清,我相信期望的答案不涉及where条款)


到目前为止,您尝试了什么sql语句?是的,这将满足我在这个小样本上的需要,db更复杂,有近一百万行,所以我不能只在col1中键入一个特定值,因为该列中可能会有很多值,而不仅仅是“ab”,对不起,应该在OPL中说明这一点,然后删除“where col1='ab'”,您就可以完成所有设置了。另外,仅供参考。。。如果您需要的输出与您在问题中提出的不同,那么将这些信息包含在问题本身中会有帮助(您可以编辑它以使其清晰),这将使其他人更容易以这种方式帮助您更快地获得正确答案。谢谢
SELECT DISTINCT tbl1.col1, tbl1.col2, tbl1.col3 
FROM tbl AS tbl1 INNER JOIN tbl AS tbl2 
    ON tbl1.col1 = tbl2.col1 AND tbl1.col2 != tbl2.col2
WHERE col3 >= DATE_ADD(NOW(), INTERVAL -1 HOUR)
mysql> select * from testTable;
+------+------+----------+
| col1 | col2 | col3     |
+------+------+----------+
| ab   |   12 | 02:20:00 | 
| cb   |   11 | 03:30:00 | 
| ab   |   12 | 03:40:00 | 
| cb   |   11 | 03:45:00 | 
| ab   |   13 | 03:50:00 | 
+------+------+----------+
5 rows in set (0.00 sec)

mysql> select col1, col2, MAX(col3) maxTime from testTable where col1='ab' group by col1, col2;
+------+------+----------+
| col1 | col2 | maxTime  |
+------+------+----------+
| ab   |   12 | 03:40:00 | 
| ab   |   13 | 03:50:00 | 
+------+------+----------+
2 rows in set (0.00 sec)
mysql> select col1, col2, MAX(col3) maxTime from testTable group by col1, col2;
+------+------+----------+
| col1 | col2 | maxTime  |
+------+------+----------+
| ab   |   12 | 03:40:00 | 
| ab   |   13 | 03:50:00 | 
| cb   |   11 | 03:45:00 | 
+------+------+----------+
3 rows in set (0.00 sec)