MySQL简化了Select&更新命令

时间:2013-03-22 21:26:06

标签: php mysql sql select sql-update

我对数据库还是比较陌生的,所以如果这听起来很傻,请跟我说话。我正在为我的网站制作一个简单的消息系统功能,登录的成员可以相互发送消息,为此我使用两个表作者(我的用户表)和消息。它们如下所述:

作者:

aId int(20) NO  PRI NULL    auto_increment
aUser   varchar(30) NO  UNI NULL    
aPass   varchar(40) NO      NULL    
aEmail  varchar(30) NO  UNI NULL    
aBio    mediumtext  YES     NULL    
aReg    datetime    NO      NULL    

消息:

msgId   int(20) NO  PRI NULL    auto_increment
mSender int(20) NO  MUL NULL    
mReciever   int(20) NO  MUL NULL    
mTitle  tinytext    NO      NULL    
mBody   mediumtext  NO      NULL    
mRead   tinyint(4)  NO      NULL    
mDate   datetime    NO      NULL    

我在messages (mReciever) REFERENCES authors(aId));中也有一个约束外键 目前,当登录用户想要向另一个用户发送消息时,html表单具有“用户名,消息”输入元素 - 非常简单。对于提交执行 - 首先php脚本使用select命令查询authors表以检查用户是否存在然后从结果集中获取用户id,然后php脚本的第二部分可以使用结果集中的aId消息表上的insert命令。虽然这是有效的,但我想知道是否会有一个更简化/更优雅的解决方案,或许将两个MySQL命令合并为一个来实现相同的结果?

任何建议都非常感谢。非常感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用子查询:

Insert into Messages (mReceiver, mBody) Values ((select aId from Authors where aUser = @user), @message)

其中@user是用户名,@ message是消息。