[英]sql query with “with and in clause”
我有一個表,其中存儲用戶名,愛好和城市。愛好字段包含使用“,”運算符(例如游泳,籃,板球)加入的不同愛好。 我想根據我的搜索條件搜索至少匹配一個愛好的用戶名。
您在一列中不應具有多個屬性。 這是3nf數據庫設計的首要規則之一。 現在,您必須找出解析此數據的方法。 每天,這個問題越來越嚴重。 在數據庫中將興趣愛好分成多行。
我同意@JonH的觀點,即一列中不應包含多個信息。 它使行不再是真正的原子。
但是您在哪里,就可以使用LIKE子句返回與列中的子字符串匹配的行。
就像是:
select hobbycolumn from hobbytable where hobbycolumn like '%swimming%'
例如
要正確執行此操作,如果可能,您需要重組表。 對於您正在尋找一種可能的方法是擁有3張桌子。 我不確定城市屬於誰,因此將其與用戶放在一起。
具有以下列的user
為1:
hobbies
表:
還有一個user_hobbies
表,該表允許每個用戶具有多個興趣愛好,每個興趣愛好具有多個用戶:
然后搜索具有特定愛好的用戶是:
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.