我是C#的新手。
我在VS2010(.sdf文件)中创建了一个本地数据库。我试图在数据库列之间创建一些比较。我使用下面的连接字符串成功连接数据库:
string connectionString = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;data source=c:\\users\\user\\documents\\visual studio 2010\\Projects\\myapp\\myapp\\mydb.sdf";
我的数据库有两个表。昵称和名字。 Nicknames有一个名为“Alias”的字段,它只列出存储的昵称。 名称有一个名为“Text”的字段,它只列出存储的名称。
例如:
别名
Masher
Jones
Jaime
John
Joker
姓名
John
Adam
Matt
Jones
假设这些是我数据库中的值。我想要的是找到不在名称表中的昵称 - >>在我的例子中,Masher,Jaime和Joker。
我该怎么做?我正在使用C#和VS2010。
以下是我在SQL代码方面的尝试:
"SELECT Alias FROM nicknames WHERE (NOT (Alias IN(SELECT Text FROM Names))) ";
"SELECT Alias FROM nicknames EXCEPT SELECT Text FROM Names";
"SELECT Alias FROM nicknames t LEFT JOIN Names m ON m.Text = t.Alias WHERE m.Text IS NULL";
"SELECT Alias FROM nicknames UNION SELECT Text FROM Names";
我该怎么办?
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
string sql = "MYQUERYFROMTHEABOVEEXAMPLE";
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataReader reader;
reader = cmd.ExecuteReader();
string result = "";
while (reader.Read())
{
result += reader.GetString(0) + "\n";
}
这是我用来阅读结果的内容。
答案 0 :(得分:4)
尝试:
SELECT Alias FROM nicknames WHERE Alias not in (SELECT Text FROM Names)
编辑:改为尝试:
select a.Alias
from nicknames a left outer join Names n on a.alias = n.text
where n.text IS NULL
我的尝试@你的代码(忽略我使用SQL语法的事实,就像我使用的那样):
答案 1 :(得分:1)
Select [Alias] from [nicknames] where [Alias] not in (select [text] from [names])
应该完全按照自己的意愿行事。