php - 整数和字符串之间的内连接

标签 php mysql

我正在尝试对来自两个不同数据库的两个表进行内部联接。

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/

相关文章:

PHP 和 MySQL session

javascript - 使用 Json 如何根据数据库中的值选择单选按钮?

mysql - 如何从另一台 Windows 服务器计算机访问 Windows 服务器计算机上的 MySQL 数据库

php - 同一张表的Mysql连接查询

mysql - 为什么 mysql jdbc 驱动程序将 mysql 类型 smallint 映射到 int?

mysql - Sequelize.js 外键

php - MySQL .sql 导入计划

php - 外键在 phpmyadmin 中不起作用

php - Symfony3,设置用户上次登录日期

c# - C# 的 mysql 存储过程出错