查询-从2个表中选择具有相同名称的列并进行比较

时间:2019-05-13 11:50:00

标签: c++ mysql

我很难弄清楚如何正确地进行此查询。因此,基本上,我有以下表格:

Table 1,
id | username,

Table 2,
id | someinfo | moreinfo

我想做的是:打印id,用户名,someinfo,moreinfo,其中table1中的id和table2中的id相等。

注意,我正在尝试使用mysql lib在c ++中执行此操作。

c ++

std::string query = "SELECT id,username FROM table1 
                    UNION ALL 
                    SELECT someinfo,moreinfo FROM table2 
                    WHERE table1.id=table2.id";


MYSQL_RES* res_set;
MYSQL_ROW row;
mysql_query(connect, query.c_str());
res_set = mysql_store_result(connect);
int numrows = mysql_num_rows(res_set);
int num_col = mysql_num_fields(res_set);

int j = 0;
while (((row = mysql_fetch_row(res_set)) != NULL))
{
    for (int i = 0; i < num_col; i++)
    {
        printf("%s ", row[i] != NULL ? row[i] : "");

    }
    j++;
    std::cout << '\n';
}

mysql_close(connect);

我希望输出能打印行,但是我抛出了异常,这可能是一个错误的查询,因为此确切的代码适用于更简单的查询(例如SELECT id,username FROM table1)

3 个答案:

答案 0 :(得分:1)

实际上,您的问题似乎与您的查询更相关。

std::string query = "SELECT id,username, someinfo, moreinfo 
                     FROM table1
                     JOIN table2 ON table1.id=table2.id"

您应该阅读一些教程on SQL

答案 1 :(得分:1)

您的查询应为:

query = "SELECT table1.id, table1.username, table2.someinfo, table2.moreinfo 
         FROM table1 
             JOIN table2 on table1.id = table2.id";

答案 2 :(得分:0)

您尝试的UNION在语法上是错误的,并且在逻辑上不会产生您想要的结果。您需要加入:

SELECT 
  table1.id, table1.username,
  table2.someinfo, table2.moreinfo 
FROM table1 INNER JOIN table2
ON table2.id = table1.id
相关问题