MySQL : insert into select && where not exists

标签 mysql sql

我需要在名为“queue”的表中插入一些数据,该表是特定日期的患者队列。将插入两个字段数据。两个字段名称是“PatientID”和“访问日期”。表‘队列’如

QueueID      |         PatientID |           Visiting_date |
-------------|-------------------|-------------------------|
      1      |   4               |      Current date       |

表:队列

但是插入记录时有两个条件:

条件 1:patitentID 来自 patient 表(如下所示) 条件2:如果一条记录不存在,将插入到'queue'表中以防止重复。即PatientID = 4如果已经插入则不会插入。

-------------|-----------------|------------------|
 patitentID  |    Patient Name |    Contact no    |
-------------|-----------------|------------------|
     4       |  David          |  01245785874     |

表:病人

我的 SQL 是:(它不起作用)

INSERT INTO `queue`(`patientID`, `Visiting_date`)
SELECT  patient.`patientID`,’CURDATE()’ FROM `patient`
WHERE NOT EXISTS (
    SELECT `patientID`, `visiting_date`FROM  `queue`
 WHERE `patientID` = '4' AND `visting_date`=CURDATE()
) LIMIT 1;

最佳答案

你可以设置一个 foreign key以确保患者 ID 存在。

在队列表中,您可以将 patientID 设置为 unique ,这确保您只能在队列表中插入唯一 ID。

此外,如果您希望能够插入相同的用户 ID 但日期不同,您可以 could specify unique constraint for multiple columns in MySQL .

如果你只想用 mysql 查询来解决它,你可以 use this question .

关于MySQL : insert into select && where not exists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39719112/

相关文章:

php - 使用 PHP 从数据库中预填充 token 输入文本框中的值

mysql - 具有相同 ID 的 2 个表的内部连接

mysql - 获取Wordpress DB中具有特定usermeta值的用户数量

php - Mysql查询语法失败

sql - SparkSQL 错误表未找到

sql - 如何在我的 SQL Server 代理作业中创建一个步骤来运行我的 SSIS 包?

php - 一列中有多个外键?

MySQL在Linux上修改用户名

MySQL:如何查找哪个用户使用错误密码登录

sql - SELECT 获取数据还是将其存储在字段中?