我正在尝试对来自两个不同数据库的两个表进行内部联接。
SELECT
trans.user_id
FROM
(SELECT
user_id, timestamp AS transection
FROM
`Abcd_Transactions`.`Transaction_Archives`) AS trans
INNER JOIN
(SELECT
userid
FROM
Abcd_QNA.qa_posts
WHERE
type = 'Q') AS ques ON trans.user_id = ques.userid
但在上面的 trans.user_id 是 STRING,但 ques.userid 是 INTEGER。所以它给了我意想不到的结果。为了将 ques.userid 转换为 char。我用过。
convert(ques.userid, char)
但是,这需要无限的时间。
我发现了许多此类问题的链接,并声称有解决方案,但我没有得到适当的答案。
最佳答案
尝试这个,是的,查询将进行,因为由于使用 find_in_set 函数而不会使用索引,因为数据类型不同 -
SELECT
trans.user_id
FROM
(SELECT
user_id, TIMESTAMP AS transection
FROM
`Abcd_Transactions`.`Transaction_Archives`) AS trans
INNER JOIN
(SELECT
userid
FROM
Abcd_QNA.qa_posts
WHERE
TYPE = 'Q') AS ques ON FIND_IN_SET(ques.userid,trans.user_id)
即使是下面的查询也可以很快-
SELECT trans.user_id, trans.TIMESTAMP AS transection, ques.
FROM `Abcd_Transactions`.`Transaction_Archives` AS trans
JOIN Abcd_QNA.qa_posts AS ques ON FIND_IN_SET(ques.userid,trans.user_id)
WHERE ques.type='Q';
关于php - 整数和字符串之间的内连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31956835/