Mysql FIND_In_SET返回具有该集合的所有值的行

时间:2016-11-11 18:47:23

标签: mysql

********* Thanx in ADvance *****************

我正在运行此查询:

SELECT * FROM `test_lab_mapping` tlm 
WHERE FIND_IN_SET(tlm.testID,'1,2')

结果出现在这张图片中:

FIND THE RESULT OF THAT QUERY

我想获取所有labId(COLUMN)行,这些行包含我们将在testId(column)函数中传递的所有find_in_set的相应条目。 按照上面的查询我通过了FIND_IN_SET(labId,'1,2'); 它返回所有数据,但有一行labId = 3 由于labId =1具有testId=1testId=2的相应条目,并且labId = 2也包含testId 1和2的相应条目。

labId=3只有相应的testId=1条目,但没有testId = 2条目,因此不应该有结果。

1 个答案:

答案 0 :(得分:0)

FIND_IN_SET不会这样做。

执行此操作的一种方法是为要包含的每个testId使用联接:

SELECT labId FROM test_lab_mapping WHERE testId = 1
  JOIN SELECT labId FROM test_lab_mapping WHERE testId = 2
  USING (labId)

这只会导致两个测试中出现的labId个值。联接中的第二个SELECT不会导致labId = 3的行,因为testId = 2labId = 3没有行,所以{{1} } 3没有出现在结果中。

如果您需要检查更多测试,请添加更多labId选择:

JOIN