我有两个表。我想从第一个表中找到一行中包含两个连续字符串的行,这些字符串出现在第二个表的某一行中。当我试图写这样的查询,它给了错误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