Mysql SQL查询两个不同查询中的行值

Mysql SQL查询两个不同查询中的行值,mysql,sql,Mysql,Sql,我相信这个问题以前已经得到了回答,但我无法找到正确的搜索词来找到我的答案 我有一张桌子,比如: USERNAME ACTIONNUM VALUE1 VALUE2 -------- ---------- ------ ------ Person1 Action1 0 1 Person1 Action1 1 1 Person1 Actio

我相信这个问题以前已经得到了回答,但我无法找到正确的搜索词来找到我的答案

我有一张桌子,比如:

USERNAME     ACTIONNUM      VALUE1     VALUE2
--------     ----------     ------     ------
Person1      Action1             0          1
Person1      Action1             1          1
Person1      Action1             1          1
Person1      Action2             0          1
Person1      Action2             1          1
Person2      Action3             0          1
Person2      Action3             1          1
Person3      Action4             1          1
对于本例,我想对0,1的VALUE1和VALUE2执行一次搜索,只给我用户名。所以第一次搜索结果是:Person1,Person2

然后,第二次搜索应该给我一个不同的操作编号,并计算值1,1的操作存在的次数,但只给我在第一次搜索中找到用户名的行

因此,对于本例,我希望查询返回:

USERNAME     ACTIONNUM      COUNT
--------     ----------     -----
Person1      Action1            2
Person1      Action2            1
Person2      Action3            1

因此跳过Person3,因为Person3不会从第一次搜索中返回,您可以在子查询中使用它:

select * from table where value1 = 1 and value2 = 1 and username in  (
select username from table where value1 = 0 and value2 = 1
)

您可以在子查询中使用:

select * from table where value1 = 1 and value2 = 1 and username in  (
select username from table where value1 = 0 and value2 = 1
)

您可以在子查询中使用:

select * from table where value1 = 1 and value2 = 1 and username in  (
select username from table where value1 = 0 and value2 = 1
)

您可以在子查询中使用:

select * from table where value1 = 1 and value2 = 1 and username in  (
select username from table where value1 = 0 and value2 = 1
)

改变这个答案,我误解了问题的一部分

SELECT username, actionnum, (select count(actionnum)
                             from test1 b
                             where b.value1=1
                             and b.value2=1
                             and b.username = a.username
                             and b.actionnum = a.actionnum)
FROM test1 a
WHERE  value1 = 0 AND value2 = 1
order by 1, 2;

参见

更改此答案,我误读了部分问题

SELECT username, actionnum, (select count(actionnum)
                             from test1 b
                             where b.value1=1
                             and b.value2=1
                             and b.username = a.username
                             and b.actionnum = a.actionnum)
FROM test1 a
WHERE  value1 = 0 AND value2 = 1
order by 1, 2;

参见

更改此答案,我误读了部分问题

SELECT username, actionnum, (select count(actionnum)
                             from test1 b
                             where b.value1=1
                             and b.value2=1
                             and b.username = a.username
                             and b.actionnum = a.actionnum)
FROM test1 a
WHERE  value1 = 0 AND value2 = 1
order by 1, 2;

参见

更改此答案,我误读了部分问题

SELECT username, actionnum, (select count(actionnum)
                             from test1 b
                             where b.value1=1
                             and b.value2=1
                             and b.username = a.username
                             and b.actionnum = a.actionnum)
FROM test1 a
WHERE  value1 = 0 AND value2 = 1
order by 1, 2;

请参见

尝试类似的方法

Select 
  UserName
, ActionNum
, Count(*) As Cnt
From MyTable
    Where Value1 = 1
      And Value2 = 1 
      And UserName In
        ( 
            Select Distinct UserName 
            From MyTable
            Where Value1 = 0
              And Value2 = 1 
        )
Group By
  UserName
, ActionNum

试试这样的

Select 
  UserName
, ActionNum
, Count(*) As Cnt
From MyTable
    Where Value1 = 1
      And Value2 = 1 
      And UserName In
        ( 
            Select Distinct UserName 
            From MyTable
            Where Value1 = 0
              And Value2 = 1 
        )
Group By
  UserName
, ActionNum

试试这样的

Select 
  UserName
, ActionNum
, Count(*) As Cnt
From MyTable
    Where Value1 = 1
      And Value2 = 1 
      And UserName In
        ( 
            Select Distinct UserName 
            From MyTable
            Where Value1 = 0
              And Value2 = 1 
        )
Group By
  UserName
, ActionNum

试试这样的

Select 
  UserName
, ActionNum
, Count(*) As Cnt
From MyTable
    Where Value1 = 1
      And Value2 = 1 
      And UserName In
        ( 
            Select Distinct UserName 
            From MyTable
            Where Value1 = 0
              And Value2 = 1 
        )
Group By
  UserName
, ActionNum

你可以试试像

SELECT 
    table.USERNAME,
    table.ACTIONNUM,
    COUNT(table.ACTIONNUM) as ACTIONNUMCOUNT
FROM 
    table
WHERE
    table.VALUE1 = 1
    AND
    table.VALUE2 = 1
    AND
    USERNAME IN 
                (
                    SELECT DISTINCT USERNAME FROM table where value1 = 0 and value2 = 1
                )
GROUP BY
    table.ACTIONNUM

你可以试试像

SELECT 
    table.USERNAME,
    table.ACTIONNUM,
    COUNT(table.ACTIONNUM) as ACTIONNUMCOUNT
FROM 
    table
WHERE
    table.VALUE1 = 1
    AND
    table.VALUE2 = 1
    AND
    USERNAME IN 
                (
                    SELECT DISTINCT USERNAME FROM table where value1 = 0 and value2 = 1
                )
GROUP BY
    table.ACTIONNUM

你可以试试像

SELECT 
    table.USERNAME,
    table.ACTIONNUM,
    COUNT(table.ACTIONNUM) as ACTIONNUMCOUNT
FROM 
    table
WHERE
    table.VALUE1 = 1
    AND
    table.VALUE2 = 1
    AND
    USERNAME IN 
                (
                    SELECT DISTINCT USERNAME FROM table where value1 = 0 and value2 = 1
                )
GROUP BY
    table.ACTIONNUM

你可以试试像

SELECT 
    table.USERNAME,
    table.ACTIONNUM,
    COUNT(table.ACTIONNUM) as ACTIONNUMCOUNT
FROM 
    table
WHERE
    table.VALUE1 = 1
    AND
    table.VALUE2 = 1
    AND
    USERNAME IN 
                (
                    SELECT DISTINCT USERNAME FROM table where value1 = 0 and value2 = 1
                )
GROUP BY
    table.ACTIONNUM


您是否尝试过任何操作?因此,对于特定操作,如果
VALUE1=0和VALUE2=1
不正确,这是否无关紧要?只要一个给定的
用户名存在一次,我对SQL非常陌生,所以我尝试的所有东西都没有返回任何东西。我基本上可以分别执行每个查询,因此可以返回不同的用户名或actionnum的每个实例。我还没有找到任何简单的方法来以我想要的方式合并这些结果。@user2871467:潜水员的答案给了你正确的信息吗?或者您是否需要所有的
ACTIONNUM
,即使不匹配这些值?我从表中的选择用户名ACTIONNUM,count(*)更改了我的答案,其中value1=0和value2=1按用户名分组ACTIONNUM;因为我误读了问题的一部分,所以我把它改成了下面的一个。sqlfiddle已附加。您尝试过任何操作吗?因此,如果某个特定操作的
VALUE1=0和VALUE2=1不正确,这无关紧要吗?只要一个给定的
用户名存在一次,我对SQL非常陌生,所以我尝试的所有东西都没有返回任何东西。我基本上可以分别执行每个查询,因此可以返回不同的用户名或actionnum的每个实例。我还没有找到任何简单的方法来以我想要的方式合并这些结果。@user2871467:潜水员的答案给了你正确的信息吗?或者您是否需要所有的
ACTIONNUM
,即使不匹配这些值?我从表中的选择用户名ACTIONNUM,count(*)更改了我的答案,其中value1=0和value2=1按用户名分组ACTIONNUM;因为我误读了问题的一部分,所以我把它改成了下面的一个。sqlfiddle已附加。您尝试过任何操作吗?因此,如果某个特定操作的
VALUE1=0和VALUE2=1不正确,这无关紧要吗?只要一个给定的
用户名存在一次,我对SQL非常陌生,所以我尝试的所有东西都没有返回任何东西。我基本上可以分别执行每个查询,因此可以返回不同的用户名或actionnum的每个实例。我还没有找到任何简单的方法来以我想要的方式合并这些结果。@user2871467:潜水员的答案给了你正确的信息吗?或者您是否需要所有的
ACTIONNUM
,即使不匹配这些值?我从表中的选择用户名ACTIONNUM,count(*)更改了我的答案,其中value1=0和value2=1按用户名分组ACTIONNUM;因为我误读了问题的一部分,所以我把它改成了下面的一个。sqlfiddle已附加。您尝试过任何操作吗?因此,如果某个特定操作的
VALUE1=0和VALUE2=1不正确,这无关紧要吗?只要一个给定的
用户名存在一次,我对SQL非常陌生,所以我尝试的所有东西都没有返回任何东西。我基本上可以分别执行每个查询,因此可以返回不同的用户名或actionnum的每个实例。我还没有找到任何简单的方法来以我想要的方式合并这些结果。@user2871467:潜水员的答案给了你正确的信息吗?或者您是否需要所有的
ACTIONNUM
,即使不匹配这些值?我从表中的选择用户名ACTIONNUM,count(*)更改了我的答案,其中value1=0和value2=1按用户名分组ACTIONNUM;因为我误读了问题的一部分,所以我把它改成了下面的一个。sqlfiddle已附加。这几乎解决了它!它结合了我想要的列表,希望我也能解决它的其余部分。这几乎解决了它!它结合了我想要的列表,希望我也能解决它的其余部分。这几乎解决了它!它结合了我想要的列表,希望我也能解决它的其余部分。这几乎解决了它!它以我想要的方式组合了列表,希望我也能解决其余的问题。可能需要一个
分组人
?就我所能理解的问题而言,现在在我看来是正确的。虽然还不清楚目的是什么。可能需要一个
分组人吗?就我所能理解的问题而言,现在看起来对我来说是正确的。虽然还不清楚目的是什么。可能需要一个
分组人吗?就我所能理解的问题而言,现在看起来对我来说是正确的。虽然还不清楚目的是什么。可能需要一个
分组人吗?就我所能理解的问题而言,现在看起来对我来说是正确的。虽然还不清楚目的是什么。