我有2个表:table1和table2。此表具有不同的字段,但是table1上的字段'uid'始终与table2中的'uidd'字段具有相同的值。并非表1中的所有ID在表2中都相同,但是表2中的所有ID在表1中具有相同的值。我试图对所有记录进行查询,这些记录中'uid'在另一个表中的'uid'具有相同的值,'uidd'中的table2具有相同的值,在这种情况下,创建一个包含Table1中包含此人的数据表。这怎么可能?我试过了:
public void ChackForActiveUsers()
{
string name = Request.QueryString["n"];
string fileName = "UsersDB.accdb";
string sql = "";
sql += "SELECT * FROM table1 WHERE uid = '(SELECT uidd FROM table2)'";
DataTable dt = MyAdoHelper.ExecuteDataTable(fileName, sql);
if (dt.Rows.Count != 0)
{
output += "name - lastname - id - email - password - gender - age" + "<br/>";
for (int i = 0; i < dt.Rows.Count; i++)
{
output += "<br/><form id='mform' action='' method='get' ><input type='text' name='fname' value='" + dt.Rows[i][0] + "'/> - <input type='text' name='lastname' value ='" + dt.Rows[i][1] + "'/> - <input type='text' name='id' value ='" + dt.Rows[i][2] + "'/> - <input type='text' name='email' value='" + dt.Rows[i][3] + "'/> - <input type='text' name='password' value='" + dt.Rows[i][4] + "'/> - <input type='text' name='gender' value='" + dt.Rows[i][5] + "'/> - <input type='text' name='age' value='" + dt.Rows[i][6] + "'/> - " + "<input type = 'text' name = 'isadmin' value = '" + dt.Rows[i][7] + "' /> <input type='submit' name='sumbm' value='update' /><input type='submit' name='sumbmm' value='ban' />";
}
}
else
{
output = "not found";
}
}
我到目前为止的输出是“未找到”,但是在数据库中有行记录了这种情况。
听起来像您要使用的内容,EXISTS
并且相关子查询在另一个表中搜索ID。
SELECT *
FROM table1 t1
WHERE EXISTS (SELECT *
FROM table2 t2
WHERE t2.uidd = t1.uid);
语法更接近您的另一种选择是使用IN
。但这在table2
大时可能会变慢。
SELECT *
FROM table1 t1
WHERE t1.uid IN (SELECT t2.uuid
FROM table2 t2);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句