我有两个表:
coach_career
coach_id | start | end
483368 2017-01-01 NULL
competition_seasons
coach_id | name
483368 2017/2018
我写了查询:
SELECT * FROM coach_career cr
INNER JOIN competition_seasons s
ON SUBSTR(cr.start, 1, 4) = s.name
WHERE cr.id = 483368
基本上,我需要返回在start
中具有name
字段competition_season
的年份的教练,我使用SUBSTR
仅提取年份,即问题是此查询不返回任何记录。
答案 0 :(得分:1)
如果都是字符串值,
SUBSTR(cr.start,1,4)等于“ 2017”。
s.name =“ 2017/2018”。
两个值不相等。
答案 1 :(得分:1)
此:
SELECT * FROM coach_career cr
INNER JOIN competition_seasons s
ON s.name LIKE concat('%', SUBSTR(cr.start, 1, 4), '%')
WHERE cr.id = 483368
当name
包含值start
时,将联接表。
如果start
的数据类型为date
,请使用date_format()
提取年份,如下所示:
SELECT * FROM coach_career cr
INNER JOIN competition_seasons s
ON s.name LIKE concat('%', date_format(cr.start, '%Y'), '%')
WHERE cr.id = 483368
您确定要使用该条件吗?
WHERE cr.id = 483368
这似乎不正确。