MySQL 中的更新和选择

发布于 2024-09-28 10:09:58 字数 241 浏览 3 评论 0原文

任何人都可以帮助我如何更新在 WHERE 子句中选择另一个表的一个表。

我的查询看起来像这样,但它是一个错误。

UPDATE empinfo e SET e.tellno='32154'
 WHERE e.empno IN (SELECT ei.empno FROM empinfo ei WHERE ei.tellno <> '123456');

非常感谢您的回复。:)

Can anyone help me on how can I update one table having a selection to another table in WHERE clause..

My query is looks like this but it is an error..

UPDATE empinfo e SET e.tellno='32154'
 WHERE e.empno IN (SELECT ei.empno FROM empinfo ei WHERE ei.tellno <> '123456');

Your response is highly appreciated.. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

注定孤独终老 2024-10-05 10:09:58

为什么不:

UPDATE empinfo e SET e.tellno='32154' WHERE tellno <> '123456'

why not:

UPDATE empinfo e SET e.tellno='32154' WHERE tellno <> '123456'
ゞ记忆︶ㄣ 2024-10-05 10:09:58

这里为什么需要嵌套查询,直接尝试

UPDATE empinfo e SET e.tellno='32154'
WHERE e.tellno != '123456'

why do you need nested query here, try directly

UPDATE empinfo e SET e.tellno='32154'
WHERE e.tellno != '123456'
倾城月光淡如水﹏ 2024-10-05 10:09:58

有什么问题:

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno <> '123456';

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno != '123456';

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno NOT '123456';


但是,如果 empno 在您的表中不是唯一的,那么此 SQL 将无法像您提供的那样工作!那么,empno 是否是唯一的呢?

What's wrong with:

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno <> '123456';

or

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno != '123456';

or

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno NOT '123456';

?
However, if empno is not unique in your table then this SQL won't work like the one you've provided! So, is empno unique or not?

榕城若虚 2024-10-05 10:09:58

不知道为什么我要回答这个问题,因为你的接受率很垃圾,但就这样。

试试这个

UPDATE empinfo SET tellno='32154'
WHERE empno IN (
     SELECT empno 
     FROM empinfo 
     WHERE tellno NOT '123456'
);

Not sure why I'm answering this as you acceptence rate is rubbish but here goes.

Try this

UPDATE empinfo SET tellno='32154'
WHERE empno IN (
     SELECT empno 
     FROM empinfo 
     WHERE tellno NOT '123456'
);
趁微风不噪 2024-10-05 10:09:58

好的,示例:

REC1: empno=1 tellno='654321'
REC2: empno=2 tellno='654321'
REC3: empno=3 tellno='123456'
REC4: **empno=1** tellno='123456'

当您使用类似的内容时

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno != '123456';

,您将得到以下结果:

REC1: empno=1 tellno='32154'
REC2: empno=2 tellno='32154'
REC3: empno=3 tellno='123456'
**REC4: empno=1 tellno='123456'**

但是,您的原始查询似乎想将其更改为:

REC1: empno=1 tellno='32154'
REC2: empno=2 tellno='32154'
REC3: empno=3 tellno='123456'
**REC4: empno=1 tellno='32154'**

您想要这两个选项中的哪一个?如果您想要第二个,那么您需要执行子选择,但 MySQL 无法在同一个表上进行子选择。

Okay, example:

REC1: empno=1 tellno='654321'
REC2: empno=2 tellno='654321'
REC3: empno=3 tellno='123456'
REC4: **empno=1** tellno='123456'

When you use something like

UPDATE empinfo e SET e.tellno='32154' WHERE e.tellno != '123456';

Then you will get this:

REC1: empno=1 tellno='32154'
REC2: empno=2 tellno='32154'
REC3: empno=3 tellno='123456'
**REC4: empno=1 tellno='123456'**

However, your original query seems to want to change it to this:

REC1: empno=1 tellno='32154'
REC2: empno=2 tellno='32154'
REC3: empno=3 tellno='123456'
**REC4: empno=1 tellno='32154'**

Which of these two options did you want? If you want the second one, then you'll need to do a sub-select but a subselect on the same table isn't possible with MySQL.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文