我得到「錯誤:#1242 - 子查詢返回多個1行」試圖執行此查詢:SQL錯誤:#1242 - 子查詢返回多個1
SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604))
你有沒有這方面的任何建議查詢?
我得到「錯誤:#1242 - 子查詢返回多個1行」試圖執行此查詢:SQL錯誤:#1242 - 子查詢返回多個1
SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604))
你有沒有這方面的任何建議查詢?
JOIN
兩個表,而不是IN
斷言,這樣的:
SELECT p.id
FROM postcodes p
INNER JOIN towns t ON p.pcd LIKE CONCAT(t.pcd,' %')
WHERE t.id IN (31898,12828,15771,7604);
入住此查詢:
SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604)
也許它的結果不止一行。
或者您可以限制子查詢結果。
SELECT id FROM postcodes WHERE pcd LIKE (SELECT CONCAT(pcd,' %') FROM towns WHERE id IN (31898,12828,15771,7604) LIMIT 1)
其實我不想限制,如果我想限制這些結果,我不會在聲明中!我可以執行這個查詢每個這些id的單獨但它不是有效的,我想知道是否有一個有效的查詢,可以做這個SELECT。 – Amir
您必須將子查詢限制爲一行。要麼你應該添加一些過濾器來限制結果爲一行或添加LIMIT 1
到你的子查詢將爲你做的伎倆。
其實我不想限制,如果我想限制這些結果,我不會在聲明中!我可以執行這個查詢每個這些id的單獨但它不是有效的,我想知道是否有一個有效的查詢,可以做這個SELECT。 – Amir
我#1242 - 子查詢返回多個1行 SELECT LnDetails.EID,LnDetails.LnAmt,LnDetails.Tenure, LnDetails.UsedTenure,LnDetails.RePayAmt,LnDetails.Paid,LnDetails.OutSPay, LnDetails.IntRate,LnDetails.LnDesc,LnDetails.Pnarration,LnDetails。 Status
,LnDetails.FStatus,LnDetails.AddedBy,CAST(LnDetails.AddedDate AS CHAR)AS AddedDate,LnDetails.UpdatedBy,LnDetails.UpdatedDate,LnDetails.DeletedBy,LnDetails.DeletedDate, LnDetails.AuthBy,CAST(LnDetails.AuthDate AS CHAR) AS AuthDate,LnDetails.PaidBy,LnDetails.PaidDate,LnDetails.HashKey, LnDetails.RepayType, ( SELECT SNAME FROM LnCore WHERE(HashKey = LnDetails.LoanScheme))AS LoanScheme,CAST(LnDetails.SRepayDate AS CHAR)AS SRepayDate,CAST(LnDetails.ERepayDate AS CHAR)AS ERepayDate,CONCAT(EmpTbl_1.SName,'',EmpTbl_1.FName,'[',EmpTbl_1.EmpID'''')AS FullName, ( SELECT CONCAT(SName,' ',FName)AS Expr1 FROM EmpTbl WHERE(HashKe Y = LnDetails.AuthBy))AS AuthedBy,EmpTbl_1.EmpType,EmpTbl_1.Mobile,EmpTbl_1.Department FROM EmpTbl AS EmpTbl_1 INNER從該查詢JOIN LnDetails ON EmpTbl_1.HashKey = LnDetails.EID
。 請提出任何建議。謝謝。
輝煌!謝謝! – Amir
@Amir - 不客氣。 –