我的表1
| Participantsid | Validfrom | Validto |
| 2,4,1 | 2016-02-21 10:22:00 | 2016-02-21 12:22:00 |
| 2,4,1 | 2016-03-04 10:00:00 | 2016-03-04 10:25:00 |
| 2,3,4,1 | 2016-02-19 10:43:00 | 2016-02-19 11:08:00 |
| 2,3,4,1 | 2016-02-22 11:32:00 | 2016-02-22 11:57:00 |
| 4,6,5 | 2016-02-20 17:00:00 | 2016-02-20 18:00:00 |
| 1,2,5 | 2016-02-22 18:00:00 | 2016-02-22 19:00:00 |
| 2,3,6,1 | 2016-03-23 10:00:00 | 2016-03-23 11:00:00 |
| 1,2,3,5 | 2016-02-20 12:00:00 | 2016-02-20 14:00:00 |
| 2,6 | 2016-02-20 12:00:00 | 2016-02-20 13:00:00 |
另一个表2
+--------------+------------+
| EmployeeName | EmployeeID |
+--------------+------------+
| Mathews | 1 |
| Gerald | 2 |
| Bravo | 3 |
| Smith | 4 |
| George | 5 |
| Bailey | 6 |
| Stephen | 9 |
| Balu c | 10 |
我有一些inputid = 1,5,6。 现在我必须将此输入id与table1中的Participantsid进行比较,以获得给定的validfrom和validto日期,如果有匹配,我需要获取与该id相对应的名称。
Emaple: - inputid = 1,2,3 for from 2016-02-22 18:00:00,to-2016-02-22 19:00:00 它应该给我o / p = mathews,gerald
我目前正在编写两个select语句,并使用一个for循环,它给出了结果但错误的
我正在尝试在单个查询中执行此操作,但无法接近我所需的output.please help
答案 0 :(得分:2)
将group_concat
和find_in_set
与sub-query
一起使用,可以获得所需的结果。
<强> SQLFiddle: http://sqlfiddle.com/#!9/ce893/1 强>
select group_concat(EmployeeName) as `o/p`
from Table2
where FIND_IN_SET(EmployeeID,
(select Participantsid from Table1
where Validfrom = '2016-02-22 18:00:00' and Validto = '2016-02-22 19:00:00'));