簡體   English   中英

在MySQL中選擇逗號分隔的數據

[英]select comma separated data in MySQL

我想在查詢中選擇逗號分隔的數據,但是我有一些問題。 該頁面具有類別列表和uniq ID。 類別鏈接是這樣的;

<a href="index.php?page=categories&cat=1">Books</a>

我正在捕捉$_GET “ cat” id並列出匹配的用戶。

單擊cat = 1時出現我的問題,它列出的所有用戶類別都包含1。 像ID 1、11和15。

這是我的用戶表及其選擇的類別。

| User           | Categories | 
+----------------+------------+
| Jhon Doe       | 1,5,11     |

這是查詢;

  $catid=$_GET['cat'];
  $list=$db->query("
  SELECT * FROM users 
  WHERE categories
  LIKE '%$catid%'")->fetchAll(PDO::FETCH_ASSOC);

將值列表放在SQL的字段中幾乎總是一個壞主意; 這也不例外。 由於您的列表格式很好,因此您只需要利用它即可...請記住,對於非常小的數據庫,此查詢將非常緩慢。

WHERE categories = '$catid'  -- only item
   OR categories LIKE '$catid,%' -- first item
   OR categories LIKE '%,$catid' -- last item
   OR categories LIKE '%,$catid,%' -- somewhere in the middle
;

編輯:上面的實際列表格式已更正; 正如塔德曼(Tadman)在評論中說的那樣,當您的格式被接受時,FIND_IN_SET()更加簡潔(這就是事實)...請記住,FIND_IN_SET()可能在幕后做了類似的昂貴工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM