使用 WHERE 子句插入 INTO 查询


Insert INTO queries using WHERE clause

我在插入查询时遇到问题,在注册表中,当用户输入用户名并选择部门/中心作为助学金时,我想将该用户名插入表格助学金中。

我尝试的是;

$query14 = "INSERT INTO bursary (UserName) VALUES                   
('$UserName') WHERE DepartCent='Bursary'";
$result14=mysql_query($query14);

我的表名是助学金,看起来像;

UserID      UserName
  1        (        ) <---- I want only UserName that choose department/center as bursary

请任何人帮助我解决这个问题,欣赏这一点。

INSERT 查询意味着添加尚不存在的数据。如果要插入从查询派生的值,则需要使用实际查询来获取它。WHERE 子句失败,因为在插入行之前没有要检查的行。

真的没有足够的信息来弄清楚你想做什么,但如果我们只是继续你的问题的这一部分:

"我只想要选择部门/中心作为助学金的用户名">

那么你可能正在寻找一个插入。SELECT(假设您已经将数据插入到其他用户表"your_user_table"中(

INSERT INTO bursary(UserName) 
SELECT UserName from your_user_table
WHERE DepartCent='Bursary';

您可以:

  • 在数据库表中插入新行
  • 更新数据库表中的现有行

仅当您尝试更改现有行的值时,才有必要指定 WHERE 子句,让数据库知道要更改哪些值。编辑:你能再次解释一下你想要实现的目标吗?是否只想插入一些用户填写表单?即那些选择助学金作为部门的人?为什么不将表结构更改为以下内容:表部门:部门名称、部门标识

表用户:用户名、部门 ID(部门的外键(

编辑 Nr. 2:方法是规范化表结构。假设发生了以下情况之一:

  • 您希望稍后添加一个其他部门 - 您不希望每次都为此创建一个新表。
  • 您要更改部门的名称 - 是否要重命名表?更改代码,...我怀疑

因此,要走的方法是以一种将程序中的不同"事物"分开的方式设计您的表。您正在使用的一种类型是部门(助学金,...(,另一种类型是用户。作为一个粗略的起点,尝试为每个表创建一个表,并尝试使用所谓的外键连接这些表。这样读:

  • 每个部门都有一个唯一的部门 ID
  • 每个用户都通过此用户部门 ID 关联到一个部门

然后,您可以稍后联接这些表,以找出部门 X 的所有用户,...

从用户中选择u.用户名,d.部门名称 u 内部加入部门 d 打开u.DepartmentId=d.DepartmentId

这将向您显示所有用户的名称及其关联的部门名称