假设我有下表,其中已插入这些行:
| a | b | c |
|--- |---- |------- |
| 1A | 1B | (null) |
| 2A | 2B | 1A |
| 3A | 3B | 1A |
Run Code Online (Sandbox Code Playgroud)
我现在想要
SELECT查询中表中的所有内容以及a相应行在c整个表中出现的频率。预期输出应如下所示:
| a | b | c | count |
|--- |---- |------- |------ |
| 1A | 1B | (null) | 2 |
| 2A | 2B | 1A | 0 |
| 3A | 3B | 1A | 0 |
Run Code Online (Sandbox Code Playgroud)
对于第一行,“1A”也出现在c第二行和第三行中。然而,“2A”或“3A”不会出现在 中的其他任何地方c。
我已经尝试过以下(SQL Fiddle):
| a | b | c |
|--- |---- |------- |
| 1A | 1B | (null) |
| 2A | 2B | 1A |
| 3A | 3B | 1A |
Run Code Online (Sandbox Code Playgroud)
然而,count始终是0。
如何在一个查询中实现上述目标?我将不胜感激任何帮助!:)
您可以使用子查询:
select t.*,
(select count(*) from test t2 where t2.c = t.a)
from test t;
Run Code Online (Sandbox Code Playgroud)
这就像您的版本,但它使用正确的表别名。始终限定所有列引用。
| 归档时间: |
|
| 查看次数: |
10520 次 |
| 最近记录: |