【问题标题】:Insert in a table 2 values在表中插入 2 个值
【发布时间】:2016-03-05 03:12:32
【问题描述】:

我又需要帮助了。

我必须将表中的两个值插入“hospital_database”。此表有五列,称为“personas”。列的名称是“cod_hospital(PK)”、“DNI”、“Apellidos”、“Funion " 和 "Salario"... 我必须将 "99887766" 和 "Martínez Martínez, Alejandro" 插入 "DNI”和“Apellidos”,但根据问题,我必须插入一个只有1个人的“医院”......

我必须使用“插入+选择”,我最后的努力是这样的:

insert into personas 
values (99887766, 'Martínez Martínez, Alejandro');
select dni, apellidos 
from personas 
where count(dni)=1;

我尝试了类似的方法,并且尝试了很多方法......但它不像问题所要求的那样工作。我必须使用插入+选择,所以我不应该写“;”在“选择”之前。

【问题讨论】:

  • 如果您能提供额外的样本数据和预期结果会更有帮助。您是要插入要从中选择的同一张表中,还是您也有一张医院表?函数和工资数据从何而来?
  • 问题是:“您必须将“dni”=99887766、“apellidos”='Martínez Martínez, Alejandro”的人插入到表“PERSONAS”中,进入医院,那里只有 1人。” 主键是“cod_hospital”,每个医院都有一个代码。在医院 1 是两个人,在医院 2 是三个人......这就是我想要使用“插入”做的......但我不知道如何使用“where”之类的条件。

标签: mysql select insert


【解决方案1】:

老实说,我对此仍有一些猜测,但也许您打算在personas 表中插入一个额外的行,如果该表中只有 1 行用于给定的医院代码。为此,您需要将group by 与having 一起使用:

insert into personas (cod_hospital, dni, apellidos)
select cod_hospital, 99887766, 'Martínez Martínez, Alejandro'
from personas 
group by cod_hospital
having count(*)=1

【讨论】:

  • 是的,它有效。但是它没有保存日期,因为没有任何医院“count(*)=1”......我的意思是,每家医院至少有两个人,所以我更喜欢使用另一种情况。但是非常感谢。
【解决方案2】:

插入有几个 sintaxis,看起来你正在混合所有这些

一个是插入值http://www.w3schools.com/sql/sql_insert.asp

INSERT INTO table_name
VALUES (value1,value2,value3,...);

选择中的另一个插入 http://www.w3schools.com/sql/sql_insert_into_select.asp

INSERT INTO table2
SELECT * FROM table1;

如果你不包括所有字段,你必须指出你要插入哪些字段

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal','Tom B. Erichsen','Skagen 21','Stavanger','4006','Norway');

【讨论】:

  • 但如果我必须尝试用“insert”插入“where”之类的条件,该怎么做?我以为我可以对特定列使用“插入+设置”,但是我如何添加我需要的条件??
【解决方案3】:

cod_hospital是表的PK,每个医院只能插入一个人,把你的PK改成:cod_hospital, dni

【讨论】:

    猜你喜欢
    • 2016-05-25
    • 1970-01-01
    • 2014-11-01
    • 2016-10-26
    • 1970-01-01
    • 2018-12-13
    • 2013-03-22
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多