我有兩個表。我想從第一個表中找到一行中包含兩個連續字符串的行,這些字符串出現在第二個表的某一行中。當我試圖寫這樣的查詢,它給了錯誤1242,因爲子查詢有多個行:如何避免使用LIKE與多行子查詢時的錯誤1242
SELECT items_info.id
FROM items_info
WHERE UPPER(items_info.note) LIKE CONCAT('%',
(
SELECT CONCAT(prefix,code)
FROM users
WHERE last4 IS NOT NULL
),'%')
子查詢應該返回tabe1324
和kls889
和外部查詢應該只顯示編號1
。 ufa132
在子查詢中不匹配,因爲last4
列對於具有該代碼和前綴的用戶爲空。
也許使用NOT LIKE與子查詢是錯誤的解決方案?我怎樣才能得到所需的結果,而不會遇到這個錯誤?
這裏是我的表與示例數據。
表items_info
:
id note
1 Code: tabe1324
2 Used: ufa132
3 Opened: ufa132
表users
:
id fname lname last4 code prefix
1 Jon Doe 1234 1324 tabe
2 Jim Smith NULL 132 ufa
3 Donald Brown 5881 889 kls
這是什麼問題? – Strawberry
子查詢返回多行,導致它失敗。我的示例數據沒有正確顯示(2 NULLS,1不爲空),所以我相應地編輯了它。 – SlackerZeitgeist