MySQL LEFT JOIN и ON w / LIKE - этот запрос не будет выполнен, но совпадение существует - PullRequest
0 голосов
/ 26 февраля 2012

Мой запрос соответствует правильному формату? Я не могу найти никаких примеров использования LIKE и ON, поэтому я не уверен, является ли мой запрос проблемой. Ищете любые предложения или отзывы:

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

Ответы [ 4 ]

3 голосов
/ 26 февраля 2012

Это не правильно, вам нужно указать, какой столбец вы хотите использовать для 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 голос
/ 26 февраля 2012

Вы можете использовать LIKE в объединении, но звучит так, как будто вы действительно хотите получить 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%'
1 голос
/ 26 февраля 2012

Поскольку вы хотите использовать LIKE вместо =, это то, что вы хотите?

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

См. Также # 4420554

0 голосов
/ 23 декабря 2014

Попробуйте, используя 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'
...