2012-01-03 57 views
1

我想找到的每一行的「身份證」在我的SQL表列「團隊」 =「11」SQL IN查詢問題

然而,「團隊」存儲格式爲:

1 ,2,3,4,5,11,20

1,3,4

11,34

我已經試過ü唱「在」查詢,但不會工作。

$query = "SELECT u_id FROM #__bl_teamcord WHERE (11 IN (teams))";  
      $db->setQuery($query); 
    $remail = $db->loadObjectList(); 
+0

請參見[SQL反模式](http://pragprog.com/book/bksqla/sql-antipatterns)。 – 2012-01-03 22:32:57

+0

那本書的封面讓我崩潰了.. – 2012-01-03 22:39:59

回答

4

您可以使用:

SELECT u_id FROM #__bl_teamcord WHERE FIND_IN_SET('11',teams) 

但是,如果這些表中有大量數據和性能是至關重要的,你可能要考慮正常化您的數據到一個單獨的表,而不是使用逗號每行中的分隔列表。

+0

謝謝你邁克!就是這樣! – user1079804 2012-01-04 00:57:45

0

你不能有效地做到這一點,但如果你堅持使用正則表達式。我建議參加一個每個團隊都排隊的團隊表。