Mysql:插入select&&哪里不存在

时间:2016-09-27 07:54:04

标签: mysql sql

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

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

表:队列

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

条件1:patitentID来自患者表(如下所示) 条件2:如果不存在以防止重复,则将一条记录插入“队列”表中。如果已插入,则不会插入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;

2 个答案:

答案 0 :(得分:1)

您可以设置foreign key以确保患者ID存在。

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

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

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

答案 1 :(得分:0)

我会使用单独的查询来检查该表中是否存在具有该ID的用户。

SELECT * FROM queue WHERE PatientID = 4;

然后检查该查询的结果,如果它返回一行,这意味着那里有一个用户并且你什么都不做。

如果查询未返回行,则表示您现在可以使用查询来使用户惰性化。喜欢这个

INSERT INTO queue (PatientID, VisitingDate);