【问题标题】:mysql - LEFT JOIN two tables with columns that almost match [duplicate]mysql - 左连接两个表,其列几乎匹配[重复]
【发布时间】:2015-01-25 07:10:15
【问题描述】:

我有两个需要加入的表。问题是我可以在每个表中使用的唯一字段并不完全相同,但这是我可以使用的全部。

Voting.movie_id = a123456789
Movies.movie_id = 123456789

如您所见,前面有字母“a”。其余的完全匹配并且永远匹配。只是前面的“a”使它与众不同。

我希望有办法通过加入来做到这一点,所以我尝试了

SELECT * 
FROM voting 
RIGHT JOIN movies ON voting.movie_id = 'a'+movies.movie_id 
ORDER BY voting.ID DESC 
LIMIT 40

SELECT * 
FROM voting 
RIGHT JOIN movies ON voting.movie_id = '%'+movies.movie_id 
ORDER BY voting.ID DESC 
LIMIT 40

这不起作用,有没有办法做到这一点?

【问题讨论】:

  • 为什么是%?通配符仅适用于LIKE,不适用于=
  • 嘿,一旦你知道了,你就必须尝试一下:)
  • 我认为这个问题不应该像stackoverflow.com/questions/5975958/mysql-concatenation 的重复那样被标记,因为我不知道Concatenation 是什么意思。对于我们这些不知道如何表达这种特殊语法的人来说,这可能会帮助其他人得到答案。
  • 你知道你想连接a和电影ID,你只是不知道正确的语法。该问题的答案解决了它,不是吗?
  • 问题可能不完全相同,那是因为你不知道如何正确表达问题。答案是一样的。

标签: mysql


【解决方案1】:

在 MySQL 中,您使用 CONCAT() 函数连接字符串,而不是 +

SELECT * 
FROM voting 
RIGHT JOIN movies ON voting.movie_id = CONCAT('a', movies.movie_id)
ORDER BY voting.ID DESC 
LIMIT 40

【讨论】:

  • 完美的男人,非常感谢
猜你喜欢
  • 1970-01-01
  • 2019-05-15
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多