Mysql 选择关于案例的语句
嗨,我正在尝试从一个表返回结果集。但是,我想在结果集中添加另一列,它来自不同的表Mysql 选择关于案例的语句,mysql,sql,select,case,Mysql,Sql,Select,Case,嗨,我正在尝试从一个表返回结果集。但是,我想在结果集中添加另一列,它来自不同的表 SELECT ID, NAME, CASE (SELECT STATUS FROM OTHERTABLE O WHERE O.ID = M.ID) WHEN '1' THEN 'In progress' WHEN '2' THEN 'Complete' END as STATUS FROM MAINTABLE M 我收到错误消息: 子查询返回了多
SELECT ID, NAME,
CASE (SELECT STATUS FROM OTHERTABLE O WHERE O.ID = M.ID)
WHEN '1' THEN 'In progress'
WHEN '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M
我收到错误消息:
子查询返回了多个值。这是不允许的…etc使用加入并组织您的案例
SELECT
M.ID,
M.NAME,
CASE
WHEN O.STATUS = '1'
THEN 'In progress'
WHEN O.STATUS = '2'
THEN 'Complete'
END AS STATUS
FROM
MAINTABLE M
JOIN OTHERTABLE O
ON (O.ID = M.ID)
使用“加入”并组织您的案例
SELECT
M.ID,
M.NAME,
CASE
WHEN O.STATUS = '1'
THEN 'In progress'
WHEN O.STATUS = '2'
THEN 'Complete'
END AS STATUS
FROM
MAINTABLE M
JOIN OTHERTABLE O
ON (O.ID = M.ID)
这是因为MainTable Id在OtherTable中有多条记录 试试看
SELECT ID, NAME,
CASE
WHEN O.STATUS = '1' THEN 'In progress'
WHEN O.STATUS = '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M JOIN OTHERTABLE O ON O.Id = M.ID
这是因为MainTable Id在OtherTable中有多条记录 试试看
SELECT ID, NAME,
CASE
WHEN O.STATUS = '1' THEN 'In progress'
WHEN O.STATUS = '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M JOIN OTHERTABLE O ON O.Id = M.ID
也许你想要这个
SELECT ID, NAME,
CASE WHEN O.STATUS = '1' THEN 'In progress'
WHEN O.STATUS = '2' THEN 'Complete'
END AS STATUS
FROM MAINTABLE M
INNER JOIN OTHERTABLE O ON O.ID = M.ID
也许你想要这个
SELECT ID, NAME,
CASE WHEN O.STATUS = '1' THEN 'In progress'
WHEN O.STATUS = '2' THEN 'Complete'
END AS STATUS
FROM MAINTABLE M
INNER JOIN OTHERTABLE O ON O.ID = M.ID
在这种情况下,您需要的是联接,而不是子查询:
SELECT ID, NAME,
CASE O.STATUS
WHEN '1' THEN 'In progress'
WHEN '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M
INNER JOIN OTHERTABLE O ON O.ID = M.ID;
在这种情况下,您需要的是联接,而不是子查询:
SELECT ID, NAME,
CASE O.STATUS
WHEN '1' THEN 'In progress'
WHEN '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M
INNER JOIN OTHERTABLE O ON O.ID = M.ID;
根据错误消息,应使用限制1
SELECT M.ID, M.NAME,
CASE WHEN O.STATUS = '1' THEN 'In progress'
WHEN O.STATUS = '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M INNER JOIN OTHERTABLE O ON O.ID = M.ID LIMIT 1
根据错误消息,应使用限制1
SELECT M.ID, M.NAME,
CASE WHEN O.STATUS = '1' THEN 'In progress'
WHEN O.STATUS = '2' THEN 'Complete'
END as STATUS
FROM MAINTABLE M INNER JOIN OTHERTABLE O ON O.ID = M.ID LIMIT 1
如果你愿意读的话,错误信息中有一个很大的线索。对于某些特定的
ID
值,OTHERTABLE
中有多行。是的,将LIMIT 1
添加到子查询中,或者执行MIN(STATUS)
等操作。但是您的子查询没有按预期工作。是的,我知道有多行。但是我的目标是从MAINTABLE M中的每一行从OTHERTABLE中获取一个状态值。resultset返回许多行。。我希望每一行都有来自OTHERTABLE的状态值。这两个表之间的公共列是id,如果您愿意阅读的话,错误消息中有一条非常重要的线索。对于某些特定的ID
值,OTHERTABLE
中有多行。是的,将LIMIT 1
添加到子查询中,或者执行MIN(STATUS)
等操作。但是您的子查询没有按预期工作。是的,我知道有多行。但是我的目标是从MAINTABLE M中的每一行从OTHERTABLE中获取一个状态值。resultset返回许多行。。我希望每一行都有来自OTHERTABLE的状态值。这两个表之间的公共列是ID