假设我有一张桌子 与
A
A
A
B
B
C
C
C
CH
FH
FH
BW
CH
AW
现在:我想要一个选择...... - >结果列1和列2的6种不同组合。 如果我说选择计数(第2列):我会采取8.我不想要它。 如果我说选择(不同的第2列):我将采取5.我也不想要它。
我寻找的6种不同结果是:A-QW,A-CH,B-FH,C-BW,C-CH,C-AW 我正在寻找组合。 你能告诉我吗?
答案 0 :(得分:1)
使用GROUP BY
子句:
SELECT Column1,Column2 FROM tblname GROUP BY Column1,Column2
答案 1 :(得分:0)
分组将满足您的需求。它可以方便地为您删除重复项。
select column1, column2
from <your_table>
group by column1, column2
很确定这会做你想要的。 demo here
根据评论进行更新
select count(*) from (
select column1, column2
from <your_table>
group by column1, column2
) q
答案 2 :(得分:0)
在某些情况下,我们可以使用一个结合了两列的表达式......
举个例子:
SELECT COUNT(DISTINCT CONCAT(t.column1,'-',t.column2)) AS cnt_combinations
FROM mytable t
这仅适用于特殊情况,我们知道短划线字符不会作为column1
或column2
中的字符包含在内。添加该分隔符也不是必需的。
在更一般的情况下,这不会产生&#34;正确的&#34;结果如果列的内容包含像。
这样的值column1 column2 CONCAT(column1,'-',column2)
------- ------- ---------------------------
A -CW A--CW
A- CW A--CW
由于表达式的结果是相同的值,因此不会将这些值视为不同的值。
NULL
值会发生同样的情况,因为只要任何参数值为CONCAT()
,NULL
就会返回NULL
。
例如,使用字符串NULL
表示NULL值
column1 column2 CONCAT(column1,'-',column2)
------- ------- ---------------------------
NULL CW NULL
A NULL NULL