簡體   English   中英

帶有“ with and in子句”的sql查詢

[英]sql query with “with and in clause”

我有一個表,其中存儲用戶名,愛好和城市。愛好字段包含使用“,”運算符(例如游泳,籃,板球)加入的不同愛好。 我想根據我的搜索條件搜索至少匹配一個愛好的用戶名。

您在一列中不應具有多個屬性。 這是3nf數據庫設計的首要規則之一。 現在,您必須找出解析此數據的方法。 每天,這個問題越來越嚴重。 在數據庫中將興趣愛好分成多行。

我同意@JonH的觀點,即一列中不應包含多個信息。 它使行不再是真正的原子。

但是您在哪里,就可以使用LIKE子句返回與列中的子字符串匹配的行。

就像是:

select hobbycolumn from hobbytable where hobbycolumn like '%swimming%'

例如

要正確執行此操作,如果可能,您需要重組表。 對於您正在尋找一種可能的方法是擁有3張桌子。 我不確定城市屬於誰,因此將其與用戶放在一起。

具有以下列的user為1:

  • ID
  • 名稱

hobbies表:

  • ID
  • 名稱

還有一個user_hobbies表,該表允許每個用戶具有多個興趣愛好,每個興趣愛好具有多個用戶:

  • ID
  • user_id(外鍵)
  • hobby_id(外鍵)

然后搜索具有特定愛好的用戶是:

SELECT user.id, user.name FROM user
INNER JOIN 'user_hobbies' on user_hobbies.user_id=user.id
INNER JOIN 'hobbies' on hobbies.id = user_hobbies.hobby_id
WHERE hobbies.name LIKE "query";

暫無
暫無

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

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