繁体   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