0

错误图片在这里

SELECT daire.code, daire.durumu, daire.blblkodu, CONCAT(cari.adi , cari.soyadi) AS sahibi,
CASE daire.blkrcrkodu WHEN '0'
THEN CONCAT(cari.adi,cari.soyadi)
ELSE (SELECT CONCAT(adi,soyadi)
FROM cari
WHERE blkodu = daire.blkrcrkodu
  AND firma_code = 40
  AND site_code = 84) END AS oturan,
daire.kat, daire.kapi_no, daire.giris_no, daire.alan_m2, daire.__formatted_date
FROM daire
INNER JOIN cari ON
(daire.blshcrkodu = cari.blkodu AND cari.site_code = 84 AND daire.site_code = 84)
WHERE daire.site_code = 84
AND daire.firma_code = 40
ORDER BY daire.blkodu DESC

我有语法错误吗?我不明白问题是什么,你能帮我吗?

4

2 回答 2

1

如果子选择返回多于一行但您需要例如第一个您可以使用限制 1

SELECT daire.code, daire.durumu, daire.blblkodu, CONCAT(cari.adi , cari.soyadi) AS sahibi,
CASE daire.blkrcrkodu WHEN '0'
THEN CONCAT(cari.adi,cari.soyadi)
ELSE (SELECT CONCAT(adi,soyadi)
        FROM cari
        WHERE blkodu = daire.blkrcrkodu
        AND firma_code = 40
        AND site_code = 84
        LIMIT 1) END AS oturan,
daire.kat, daire.kapi_no, daire.giris_no, daire.alan_m2, daire.__formatted_date
FROM daire
INNER JOIN cari ON
(daire.blshcrkodu = cari.blkodu AND cari.site_code = 84 AND daire.site_code = 84)
WHERE daire.site_code = 84
AND daire.firma_code = 40
ORDER BY daire.blkodu DESC
于 2016-10-07T15:05:15.797 回答
0

您在主查询的选择列表中有一个子查询:

...
(SELECT CONCAT(adi,soyadi)
 FROM cari
 WHERE blkodu = daire.blkrcrkodu
 AND firma_code = 40
 AND site_code = 84) END AS outran

...

此类子查询必须返回 1 行和 1 列(单个值)。您的子查询返回 1 列,但返回多于 1 行,因此出现错误。

我无法为您提供关于如何修改查询以满足您的需求的确切解决方案,因为您没有共享有关查询本身的任何内容,并且您只询问了错误是什么。一般可以申请

  • limit 1将行数限制为 1 的子句
  • 使用任何聚合函数,例如min()将结果集折叠成一行
  • 修改您的 where 条件以仅返回一条记录。
于 2016-10-07T15:05:43.693 回答