C# 如何使2个SELECT语句并集
这是我的疑问:C# 如何使2个SELECT语句并集,c#,sql,select,union,union-all,C#,Sql,Select,Union,Union All,这是我的疑问: string x1 = "SELECT unos_golub.drzava, unos_golub.spol, unos_golub.broj_goluba as broj, parovi.par_m, parovi.par_z,parovi.broj_para FROM parovi JOIN unos_golub ON (parovi.par_m=unos_golub.ID) WHERE parovi.uzgojni_par=1"; string x2 = "SELECT u
string x1 = "SELECT unos_golub.drzava, unos_golub.spol, unos_golub.broj_goluba as broj, parovi.par_m, parovi.par_z,parovi.broj_para FROM parovi JOIN unos_golub ON (parovi.par_m=unos_golub.ID) WHERE parovi.uzgojni_par=1";
string x2 = "SELECT unos_golub.drzava, unos_golub.spol, unos_golub.broj_goluba as broj2, parovi.par_m, parovi.par_z,parovi.broj_para FROM parovi JOIN unos_golub ON (parovi.par_z=unos_golub.ID) WHERE parovi.uzgojni_par=1 ORDER BY broj_para ASC";
cmd.CommandText = x1+" UNION ALL "+x2;
在我的表格“parovi”中,有两列“par_m”和“par_z”。
在第二个表“unos_golub”中有“ID”和其他一些。现在我需要从“par_m”和“par_z”中获取值,在“unos_golub”中匹配它并获取一些数据
例如,如果我得到par_m=91和par_z=92,我需要在“unos_golub”的ID中找到这些数字,并获得91和92的不同数据并显示出来。
我想也许工会都能帮上忙,但它不起作用
这是我的桌子
这种方法将把所有“M”和“Z”值放在一行中。注意,我加入了两次“unos_golub”表,但别名不同。所以,现在我有一个parovi记录同时指向各自的“M”和“Z”版本。并且可以从每个列中提取列,从而为它们提供别名结果列名,后缀为“M”和“Z”,表示它们各自的原点
SELECT
parovi.par_m,
parovi.par_z,
parovi.broj_para,
unos_M.drzava as drzava_M,
unos_M.spol as spol_M,
unos_M.broj_goluba as broj_M,
unos_Z.drzava as drzava_Z,
unos_Z.spol as spol_Z,
unos_Z.broj_goluba as broj_Z
FROM
parovi
JOIN unos_golub as unos_M
ON parovi.par_m = unos_M.ID
JOIN unos_golub as unos_Z
ON parovi.par_m = unos_Z.ID
WHERE
parovi.uzgojni_par=1";
根据您希望显示所有行的注释,您的查询应该只需要一个小的更改。进行联合时,查询必须具有相同的列名。你通过他们改变了一个
unos_golub.broj_goluba as broj
vs
unos_golub.broj_goluba as broj2
这将使它无法通过查询。列名不同,因此失败。是要两个物理行,每个条目一行,还是要一行显示每个“M”和“Z”值对应的列?我想使用每个“M”和“Z”值对应的列来显示表2中的行。这有点混淆了您的需要。你能告诉我们预期的结果吗?你的数据库管理系统是什么。union总是取第一组列,如果数据类型相同,列数相等,就可以了。(sql server+mysql+PostgreSQL)@Kaf,我同意,但是一些引擎的行为不同,因此我无法根据提供的通用“sql”标记确认:)@FosAvance,更改为较低的“u”以匹配其余别名引用。我更新了我的答案。@FosAvance,是它,我提供的查询,还是联合列名的修复:)@FosAvance,不是。。。查看别名列名。。。您将分别需要读卡器[“broj_M”]和读卡器[“broj_Z”]、读卡器[“drzava_M”]和读卡器[“drzava_Z”]。。。根据列的命名方式,记录将全部位于同一行上。