mysql - 如何编写一个 SQL INSERT 查询来避免重复某一行范围内的数据

标签 mysql sql

 id | user_id | job_range | start_date | client_name| job_type | job_no     |  job_quan                        
 1  |    4    | 1-3000    | 2014-05-13 |  kenny's   | coloured |   t50000   |    n4500
 2  |    2    | 3001-4500 | 2014-05-13 |  kenny's   | coloured |   t50000   |    n4500
 3  |    3    | 1-2000    | 2014-05-15 |  fredy's   | plain    |   t42100   |    n5000
 4  |    4    |2001-5000  | 2014-05-15 |  fredy's   | plain    |   t42100   |    n5000 

我想编写一个查询,该查询使用已输入数据库 (job_range) 的数字范围并将其与 job_no 匹配,以避免其他用户将作业范围内的作业放入数据库。 该数字不能在已经给出的较低范围内。对于任何特定的工作,如果有 1-2000 的范围,那么您不能为该工作的表添加另一行,范围从 1-2000 开始,只能选择 2001 到 5000 的工作。所以用户只能选择做工作 btw 范围 2001 -5000

最佳答案

您必须使列UNIQUE。您可以通过运行此查询来做到这一点(您需要先删除重复的条目):

ALTER TABLE jobs ADD UNIQUE (desc)

然后当您尝试运行查询并且 desc 列已经存在时,它将返回一个错误。

关于mysql - 如何编写一个 SQL INSERT 查询来避免重复某一行范围内的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23682572/

相关文章:

mysql - 如果第一个表中尚不存在给定值,则 SQL 触发器 : Inserting a row in a table after an insert on another table,

使用 MAX 的 mysql 查询

java - 添加数组时准备语句错误

mysql - 如何获取属于用户的所有记录并仅显示具有不同名称的记录?

mysql - Talend 多重查找

MySQL:更改列类型和日期时间格式

MySQL 根据第一个日期从每个诊断的患者中仅选择一行

如果值不存在,则 Mysql 更新

sql - SQL Server 上的存储过程 "recompile"意味着什么?

mysql - 如何从MySQL表中删除重复值