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