簡體   English   中英

我怎樣才能逆IN語法?

[英]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.

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