如何在SQL中查找具有相同值但可能会排列的行的所有行

时间:2018-09-15 23:41:09

标签: sql sqlite

无法弄清楚我们如何以任何顺序计算具有相同值的所有行。例如在此示例

1| Jay   | Jo
2| Jay   | Jo
3| Jay   | Jo
4| Jo    | Jay
5| Linda | Luke
6| Linda | Luke
7| Luke  | Linda
8| Luke  | Wendy

我正在寻找以下输出:

Jay   | Jo    | 4
Linda | Luke  | 3
Luke  | Wendy | 1

我被杀了两天。一切都不起作用。 加入会导致人数过多,工会也无法正常工作。因为它们会保留两个命令的条目,所以我知道我可能需要进行某种自连接,并考虑同一张表的两个副本。但是我不知道该执行什么操作! 真的很困惑!请帮忙!

如果可能的话,我希望在SQL Lite中给出答案,但是可能任何语法都可以。我只需要了解如何组成表格的逻辑即可。

谢谢

2 个答案:

答案 0 :(得分:3)

只需一点逻辑开关就可以解决问题

示例

FROM python:3.6
ENV PYTHONUNBUFFERED 1
ENV C_FORCE_ROOT true
RUN mkdir /djangoPrj
RUN mkdir /static_cdn
WORKDIR /djangoPrj
ADD ./djangoPrj /djangoPrj
RUN apt-get upgrade
RUN apt-get update
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

返回

Select Col1
      ,Col2
      ,count(*) as Hits
 From (
        Select case when col1<Col2 then Col1 else Col2 end as Col1
              ,case when col1<Col2 then Col2 else Col1 end as Col2
          from YourTable
      ) A
 Group By Col1,Col2

答案 1 :(得分:2)

SQLite中更简单的方法是使用leastgreatest

select least(col1,col2),greatest(col1,col2),count(*)
from tbl
group by least(col1,col2),greatest(col1,col2)