从MySql中的两个表中选择数据

Mar*_*wer 10 mysql union select database-table

我有什么:下一个结构:

table_zero
- > id (带自动增量的PRIMARY)
- >其他

table_1
- > id (表零id的外键)
- > varchar(80)示例值:(aahellobbb)
- > one_field

table_2
- > id (表零id的外键)
- > varchar(160)示例值:(aaececehellobbb)
- > other_field

我想要的:搜索并获取一个(id,varchar)数组,其中包含与varchar字段上的LIKE'%str%'的所有匹配项.例如,如果我使用"hello"字符串进行搜索...我应该使用各自的id获取两个示例值.这些ID总是不同的,因为它们是对PRIMARY KEY的引用.

我尝试了什么:我尝试使用UNION ALL,但在我的例子中它不适用于LIMITS.

Fro*_*y Z 13

通过使用,UNION您可能会获得具有相同ID的多个行.怎么用LEFT JOIN

如果我理解你的问题:

SELECT table_zero.id, table_1.varchar_field, table_2.varchar_field
FROM table_zero
  LEFT JOIN table_1 ON table_zero.id = table_1.id
  LEFT JOIN table_2 ON table_zero.id = table_2.id
WHERE table_1.varchar_field LIKE '%str%'
  OR table_2.varchar_field LIKE '%str%'
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望结果中只有一个字段包含匹配的字符串,则可以使用`COALESCE(table_1.varchar_field,table_2.varchar_field)AS matched_string`而不是`table_1.varchar_field,table_2.varchar_field` (2认同)