mysql:如何执行这两个任务
我如何在 mysql 中执行以下操作(可能使用 phpmyadmin):
1)给定现有的数值列(colA),创建一个包含文本数据的新列(colB),并在 colA = 的情况下自动用“typeA”填充此列0,如果 colB > 则为“typeB” 0 ?
2)给定以下2个表Users和Docs:
表Users具有“Username”和“UserID”列, 表文档有“DocID”、“用户名”和“用户ID”列(我知道这是多余的)
表文档中的用户名列是空的,我必须根据给定的用户ID自动填充它。
这两个任务的SQL代码是什么?
谢谢
how can I do the following points in mysql (possibly using phpmyadmin):
1) Given an existing column of numeric values (colA), create a new column with text data (colB) and automatically fill this column with "typeA" if colA = 0, and "typeB" if colB > 0 ?
2) Given the following 2 tables Users and Docs:
Table Users has the columns "Username" and "UserID",
Table Docs has columns "DocID", "Username" and UserID" (it is redundant, I know)
The column Username in table Docs is empty and I have to fill it automatically given the UserID.
What's the SQL code for these 2 tasks ?
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于第一个,您可以这样做:
我不知道您在问题中如何指定“和“typeB”如果 colB > 0”是否可以,因为 colB 是您所在的列想要写。
对于第二个问题,您应该使用视图将用户名存储在表
Docs
中。无论如何,要更新它,您可以使用以下命令:以下是创建包含用户名的视图的方法:
首先从
Docs
中删除列Username
。现在,当您想要选择文档时,您也可以看到用户名:
并且当您添加新记录时,您只需指定
UserID
。For the first one, you can do:
I don't know if it is ok how you specify in your question "and "typeB" if colB > 0", because colB is the column where you want to write.
For your second question, you should use a view to have the username in table
Docs
. To update it anyway, you can use the following:Here is how to create a view that contains the Username:
First drop the column
Username
fromDocs
.Now, when you want to select the documents, you can see the Usernames too:
And when you add a new record, you only have to specify
UserID
.对于第一个,我认为True Soft的答案应该有效。
对于第二个问题,您可能希望使用触发器来维护非规范化的用户名字段。
如果文档将更改用户 ID 和用户名,则为“更新后”创建一个类似的触发器,将所有“插入”更改为“更新”,以便更新它们以保持同步。
For the first one, I think that True Soft's answer should work.
For the second question, you probably want to use triggers to maintain the denormalized Username field.
Create a similar trigger for 'after update' changing all 'insert' to 'update' if the Docs will ever change UserID and Username, so that they'll be updated to stay synchronized.