Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL子查询通过子查询返回多行选择计数_Mysql_Sql - Fatal编程技术网

MySQL子查询通过子查询返回多行选择计数

MySQL子查询通过子查询返回多行选择计数,mysql,sql,Mysql,Sql,我正在执行这个查询 SELECT COUNT(*) AS CONNECTIONS, SERVERS.NAME AS SERVER_NAME, USERS.USERNAME AS USER, CONECT_DATE AS CONNECTION_DATE FROM CONECTIONS JOIN SERVERS ON(CONECTIONS.SERVERID = SERVERS.ID) JOIN USERS ON (CONECTIONS.USERID = USERS.ID) WHERE CONECTI

我正在执行这个查询

SELECT COUNT(*) AS CONNECTIONS, SERVERS.NAME AS SERVER_NAME, USERS.USERNAME AS USER, CONECT_DATE AS CONNECTION_DATE
FROM CONECTIONS JOIN SERVERS ON(CONECTIONS.SERVERID = SERVERS.ID)
JOIN USERS ON (CONECTIONS.USERID = USERS.ID)
WHERE CONECTIONS.USERID = (SELECT ID FROM USERS 
WHERE UPPER(USERNAME) =                                 UPPER((SELECT USERNAME FROM USERS)))
AND CONECT_DATE BETWEEN '2010-06-11' AND '2019-06-11' 
GROUP BY SERVERID, CONECT_DATE;
我试图从db表USERS中的每个用户那里得到这个查询,通过子查询来选择everyone'UPPERSELECT USERNAME from USERS',问题是返回的结果不止一行,但是如果我直接输入用户名,比如'ADMIN',它会给出结果。

您正在做的用户名=选择。。。。相等性测试中使用的子查询只能返回一个字段/行。由于您将使用未过滤的gimme将users表中的所有内容都提供给我,因此您将返回每个字段的多行。为此,您需要匹配:

SQL不允许本质上是

WHERE foo=1,2,3,4,5,6
这就是为什么IN运算符工作,用于比较值集。

您正在执行用户名=选择。。。。相等性测试中使用的子查询只能返回一个字段/行。由于您将使用未过滤的gimme将users表中的所有内容都提供给我,因此您将返回每个字段的多行。为此,您需要匹配:

SQL不允许本质上是

WHERE foo=1,2,3,4,5,6
这就是为什么IN运算符工作,用于比较值集。

这是您的where子句:

这至少有三个问题

UPPER的子查询参数可能会返回多个值,并且很可能会返回,除非USERS表有0或1行。 上部的=也有类似的问题。一个in更合适。 在外部where子句中使用=也有类似的问题。一个in更合适。 以下解决了这些问题:

WHERE CONECTIONS.USERID IN (SELECT ID
                            FROM USERS 
                            WHERE UPPER(USERNAME) IN (SELECT UPPER(USERNAME) FROM USERS))
                           )
然而,我怀疑这能解决你的全部疑问。您的SQL知识似乎有点有限。我建议你问另一个问题,提供样本数据,期望的结果,并解释你想做什么。这将使本网站上有知识的人更容易为您指明正确的查询方向。

这是您的where子句:

这至少有三个问题

UPPER的子查询参数可能会返回多个值,并且很可能会返回,除非USERS表有0或1行。 上部的=也有类似的问题。一个in更合适。 在外部where子句中使用=也有类似的问题。一个in更合适。 以下解决了这些问题:

WHERE CONECTIONS.USERID IN (SELECT ID
                            FROM USERS 
                            WHERE UPPER(USERNAME) IN (SELECT UPPER(USERNAME) FROM USERS))
                           )

然而,我怀疑这能解决你的全部疑问。您的SQL知识似乎有点有限。我建议你问另一个问题,提供样本数据,期望的结果,并解释你想做什么。这将使网站上有知识的人更容易为您指明编写查询的正确方向。

好吧,您可以继续使用另一个joinWell,您可以继续使用另一个joinWell您确定使用区分大小写的排序规则吗?除了所有的拼写错误,这个问题的后面部分是胡言乱语。考虑提供适当的DDL和/或SqLFIDLE和期望的结果集。您确定使用的是区分大小写的排序规则吗?除了所有的拼写错误,这个问题的后面部分是胡言乱语。考虑提供适当的DDL和/或SqLFIDLE连同期望的结果集。谢谢人类!它工作得很好,我想显示每个用户在date1和date2之间的特定日期对服务器的连接数。谢谢!它可以正常工作,我想显示每个用户在date1和date2之间的特定日期对服务器进行的连接数。