gpt4 book ai didi

mysql 查询后更新表

转载 作者:行者123 更新时间:2023-11-29 21:42:27 24 4
gpt4 key购买 nike

我有一张 table ,上面写满了名字和姓氏。我还有另外两列正在尝试更新。这两列包含具有相同名字和相同姓氏的人数。例如,

first   last   samef   samel

John Smith 1 2
John Adams 1 1
Mary Kate 0 0
Kate Adams 2 1
Kate Smith 2 2
Kate Smith 2 2
Alice Mirth 0 0

到目前为止我只能提出这两个查询,但它们当然是不正确的。当我需要总计数 - 1 时,它们返回每个名称的总计数。另外,结果显示在单独的表中。我想知道是否应该使用存储过程,在其中使用变量来存储 Samef 和 Samel 的计数。然后将其插入名称表中,但我不知道正确的语法。

SELECT first, last,
( SELECT COUNT(*) FROM names WHERE first = table1.first) AS samef
FROM names AS table1

SELECT first, last,
( SELECT COUNT(*) FROM names WHERE last = table2.last) AS samel
FROM names AS table2

我是 mySQL 新手,请提供解释。

最佳答案

就像草莓提到的那样,不要存储可以导出的信息。数据库非常擅长以最佳方式存储数据。 SQL 非常擅长提取表和派生/计算数据。试试这个:

select `first`, `last`,
(select count(*)-1 from test where `first` = t.`first`) as samef,
(select count(*)-1 from test where `last` = t.`last`) as samef
from test t;

示例:http://sqlfiddle.com/#!9/9c673f/1

结果:

| first |  last | samef | samef |
|-------|-------|-------|-------|
| john | smith | 1 | 2 |
| john | adams | 1 | 1 |
| mary | kate | 0 | 0 |
| kate | adams | 2 | 1 |
| kate | smith | 2 | 2 |
| kate | smith | 2 | 2 |
| alice | mirth | 0 | 0 |

关于mysql 查询后更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34386725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com