[英]How can i make inverse of IN Syntax?
如果我有類似的代碼
$vals = "50,60,40";
IN SQL
"SELECT * FROM TABLE WHERE col IN( $vals )"
不,如果我有一個像 50 這樣的值並且我在 SQL 中有 col 包含“50,40,60”
我該如何選擇它
我的意思是 IN 語法的逆
如果我在 sql 中有表包含類似的值
Firstname | Lastname | Age | Hobbies
Ahmed | Ali | 50 | run,swim
Mohammed | Ahmed | 30 | run
如果我想要誰可以在愛好中游泳
我的意思是 IN 語法的逆
你可以使用
NOT IN
運算符,如果你有一個好的表結構。
您應該為Hobbies
制作一張表格,然后在您的person
表格中添加一個 relanshionship,因為現在完成此操作的唯一方法是使用包含大量LIKE
條件的丑陋 SQL 。
我建議更改您的架構以將值存儲在一個單獨的表中,並帶有原始列的 FK。
People
ID - PK
FirstName
LastName
Hobbies
ID -- PK
Person_ID -- FK to People
Hobby -- store your comma-separated values here
然后你可以做
select People.ID, People.FirstName, People.LastName
from People
inner join Hobbies on People.ID = Hobbies.Person_ID
where Hobbies.Hobby = 'Swimming'
一個更好的結構可能有 3 個表,允許您獨立於人們維護一組愛好,並簡單地保持每個人與其愛好之間的關系。
People
ID
FirstName
LastName
Hobbies
ID
Hobby
PeopleHobbies
ID
Person_ID
Hobby_ID
與往常一樣,考慮您的查詢需求並在表上創建合適的索引以允許快速查找和連接。
檢查FIND_IN_SET() function:
"SELECT * FROM TABLE WHERE FIND_IN_SET('swim', Hobbies) > 0"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.