MySQL LEFT JOIN和ON w / LIKE - 此查询不会运行但匹配确实存在

时间:2012-02-26 01:12:32

标签: mysql sql join sql-like

我的查询是否遵循正确的格式?我找不到任何使用LIKE和ON的例子,所以我不确定我的查询是否是问题。寻找任何建议或反馈:

SELECT * 
FROM table_1 a
LEFT JOIN table_sql ON a.case_id LIKE '%45305%'

4 个答案:

答案 0 :(得分:3)

这是不正确的,您需要指定要用于JOIN的列,但是您可以执行类似这样的操作

SELECT * from table_1 AS a
   LEFT JOIN table_sql AS b
   ON a.case_id = b.id
WHERE
   a.case_id LIKE '%45305%'

答案 1 :(得分:1)

由于您想使用LIKE代替=,这是您想要的吗?

SELECT * FROM table_1 a
LEFT JOIN table_sql ON 
 a.case_id LIKE CONCAT('%', table_sql.case_id, '%')

另见#4420554

答案 2 :(得分:1)

您可以在联接中使用L​​IKE,但听起来您真正想要的是UNION:

SELECT case_id 
     FROM table_1 a
WHERE a.case_id LIKE '%45305%'
UNION 
SELECT case_id 
     FROM table_sql s
WHERE s.case_id LIKE '%45305%'

如果您需要跟踪结果来自哪个表,您可以执行以下操作:

SELECT 'table_a' AS what_table, case_id 
     FROM table_1 a
WHERE a.case_id LIKE '%45305%'
UNION 
SELECT 'table_b', case_id 
     FROM table_sql s
WHERE s.case_id LIKE '%45305%'

答案 3 :(得分:0)

使用CONCAT()尝试此操作。当我选择全表数据时,它对我有帮助:

 SELECT p.post_name,p.post_title,p.post_type,cl.*
FROM ".$wpdb->posts." AS p
LEFT JOIN clicks AS cl
ON cl.podcast_url LIKE CONCAT('%',p.post_name,'%')
WHERE p.post_type = 'team'