我正在尝试选择所有字段并在1字段中得到一个明确的条件,但是我收到的错误是说错误的语法这就是我所拥有的
var sql = @"SELECT * distinct threadID from Threadposts where profileID = 1";
我是mssql的新手,但无法弄清楚上面的查询有什么问题,我只想在profileID = 1的地方包含所有字段,并从threadID中选择不同的值
答案 0 :(得分:2)
你需要更清楚你想要什么。您正在查询名为Threadposts
的表格,以查找profileID
为1的记录。这将返回多行,其中包含我期望的不同值。
您想要计算该人发布了多少帖子吗?你想要那个人的线程列表吗?
-- count of rows
SELECT COUNT(*)
FROM Threadposts
WHERE profileID = 1
-- list of threads
SELECT *
FROM Threadposts
WHERE profileID = 1
如果您想要不同的东西,那么您需要更新您的问题。
PS:DISTINCT
关键字会查看返回的数据并仅提供不同的值,例如如果您希望此用户发布不同的主题,无论他们是否创建了多个具有相同名称的线程:
SELECT DISTINCT ThreadTopic
FROM Threadposts
WHERE profileID = 1
使用DISTINCT *
几乎没有意义,因为每一行都有一个唯一的ID(希望如此),因此已经是不同的。
答案 1 :(得分:1)
在表格中,列可能包含许多重复值;有时你只想列出不同的(不同的)值。 DISTINCT关键字可用于仅返回不同(不同)的值。
您想要选择所有列,但仅限于特定的列(threadID)
尝试使用:
var sql = @"SELECT DISTINCT ON threadID * FROM Threadposts WHERE profileID = 1;
答案 2 :(得分:1)
当您不需要任何聚合时,DISTINCT在所有选定列上基本上是GROUP BY的简写。您要求的是一个查询,您在一个列上进行分组,但不会聚合其余列。这没有意义。