对于这样的事情有什么办法吗? :
SELECT * FROM table1
INNER JOIN table2
ON table1.field = table2.field
WHERE field2 IN (SELECT * FROM table3 WHERE field LIKE '%pattern%')
更准确地说,在IN()内部我需要table3行中与%pattern%匹配的值,因此我可以从主查询中获取具有field3 IN()范围的table3值的行。
答案 0 :(得分:0)
您应该只选择所需的字段,如
SELECT field2 FROM table3 WHERE field LIKE '%pattern%'
答案 1 :(得分:0)
您可以这样做,但列的数量和类型必须匹配
SELECT * FROM table1
INNER JOIN table2
ON table1.field = table2.field
WHERE field2 IN (SELECT field3 FROM table3 WHERE field LIKE '%pattern%')
或者例如:
SELECT * FROM table1
INNER JOIN table2
ON table1.field = table2.field
WHERE (field2_1, field2_2) fi IN (SELECT field3_1, field3_2
FROM table3
WHERE field LIKE '%pattern%')
(field2_1,field2_2)和field3_1,field3_2必须匹配数字和类型
答案 2 :(得分:0)
您可以直接使用JOIN for table3:
代替子查询SELECT *
FROM table1 T1
INNER JOIN table2 T2 ON T2.field = T1.field
INNER JOIN table3 T3 ON T3.field = T1.field2
WHERE T3.field LIKE '%pattern%'
此处T1,T2和T3为table alias以提高可读性