Mysql 子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做>;=或者当子查询用作expr时
我从sql server收到以下错误消息Mysql 子查询返回了多个值。当子查询后跟=、!=、时,不允许这样做>;=或者当子查询用作expr时,mysql,sql,subquery,Mysql,Sql,Subquery,我从sql server收到以下错误消息 子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。显然,此子查询可以返回多个值: SELECT INT_ID, FST_NAME, LAST_NAME, MID_NAME, FIRST_NAME,LAST_NAME, MIDDLE_NAME, Null, Null, CASE WHEN LEVELS = 'Done' THEN 1 ELSE NULL END AS Verified, NULL FROM Cust
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。显然,此子查询可以返回多个值:
SELECT
INT_ID, FST_NAME, LAST_NAME, MID_NAME, FIRST_NAME,LAST_NAME, MIDDLE_NAME, Null, Null,
CASE WHEN LEVELS = 'Done' THEN 1 ELSE NULL END AS Verified,
NULL
FROM Customer_Table
WHERE
CREATEDDATE = (SELECT DISTINCT MAX(CREATEDDATE) FROM Customer_Table GROUP BY INT_ID)
我很确定您打算使用相关子查询:
where CREATEDDATE = (Select Distinct max(CREATEDDATE) From Customer_Table group by INT_ID )
这听起来像是您想要一个最大每组查询:
select . . .
from Customer_Table ct
where ct.createddate = (select max(ct2.createddate)
from Customer_Table ct2
where ct2.int_id = ct.int_id
);
使用
行数
有一种更好(而且可能更高效)的方法,但是您的MySQL版本可能不支持它。错误消息准确地告诉您错误是什么(子查询返回的多个值)以及原因。您是否尝试自行运行子查询以查看其返回的内容?此查询很可能比您接受的答案更快。
SELECT
c1.INT_ID,
c1.FST_NAME,
c1.LAST_NAME,
c1.MID_NAME,
c1.FIRST_NAME,
c1.LAST_NAME,
c1.MIDDLE_NAME,
NULL,
NULL,
CASE WHEN c1.LEVELS = 'Done' THEN 1 END AS Verified,
NULL
FROM Customer_Table c1
INNER JOIN
(
SELECT INT_ID, MAX(CREATEDDATE) AS max_date
FROM Customer_Table
GROUP BY INT_ID
) c2
ON c1.INT_ID = c2.INT_ID AND
c1.CREATEDDATE = c2.max_date;