2017-09-16 67 views
2

嗨,大家好我是mySQL中的新成员,我在查询时遇到问题。我试图写一些查询,让我从表中的所有记录,如果我有两个记录具有相同的日期,我需要只有这两个之间manual_selection = 1记录。在MySQL中选择所有具有不同和条件的行

所以结果应该是我的所有记录除了ID表= 1401和id = 1549

my table

我想结合我怎么能得到这个记录是这样的:

SELECT * FROM project.score WHERE project_id = 358 
AND crawled_at IN(SELECT crawled_at FROM project.score WHERE project_id = 358 
AND manual_selection = 1 GROUP BY crawled_at) 
ORDER BY crawled_at;  

SELECT * FROM project.score WHERE project_id = 358 
GROUP BY crawled_at HAVING manual_selection = 1; 

但我所有的方式总是只与manual_selection = 1的行我有ent idea我怎么能在manual_selection = 1的情况下使用重复的“crawled_at”来区分行。有人可以帮我吗?

+0

你可以使用的组合'SELECT DISTINCT(场)'和'ORDER BY' – Manav

+0

但我需要的条件如果我有两个具有相同日期的行,我只有一个manual_selection = 1,我不知道该如何做到这一点 – LukeKov

+0

它会更容易做到这一点,使用像'php'这样的脚本而不是试图制作一个mysql查询 – Manav

回答

1

试试这个:

select main.id, main.project_id, main.crawled_at, main.score, main.manual_selection 
from dcdashboard.moz_optimization_keywords as main 
left join dcdashboard.moz_optimization_keywords as non_manual_selection on non_manual_selection.crawled_at = main.crawled_at and non_manual_selection.manual_selection != 1 
group by main.crawled_at; 

结果的数据与来自问题集:

+------+------------+---------------------+-------+------------------+ 
| id | project_id | crawled_at   | score | manual_selection | 
+------+------------+---------------------+-------+------------------+ 
| 807 |  360 | 2016-02-06 00:00:00 | 76 |    0 | 
| 1001 |  360 | 2016-02-20 00:00:00 | 76 |    0 | 
| 223 |  360 | 2016-11-28 00:00:00 | 76 |    0 | 
| 224 |  360 | 2016-12-05 00:00:00 | 76 |    0 | 
| 670 |  360 | 2016-12-19 00:00:00 | 76 |    0 | 
| 1164 |  360 | 2017-04-19 00:00:00 | 78 |    1 | 
| 1400 |  360 | 2017-09-13 00:00:00 | 96 |    1 | 
| 1548 |  360 | 2017-09-15 00:00:00 | 96 |    1 | 
+------+------------+---------------------+-------+------------------+ 
8 rows in set (0.00 sec) 
+0

这项工作很好。当我有两个具有相同日期的记录时,这个查询返回两个记录中的一个,但是使用manual_selection = 0 – LukeKov

+0

对于我来说,它会返回一个manual_selection = 1的记录(如果有两个记录具有相同的日期)。至少,你的数据集是这样的。请再检查一次。 –

+0

对不起,但是当我测试它时,我的结果与你的相同 – LukeKov