我很难弄清楚如何正确地进行此查询。因此,基本上,我有以下表格:
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)
答案 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