如何选择所有选项

时间:2014-03-08 20:34:39

标签: sql sql-server distinct

我正在尝试选择所有字段并在1字段中得到一个明确的条件,但是我收到的错误是说错误的语法这就是我所拥有的

var sql = @"SELECT * distinct threadID from Threadposts where profileID = 1";

我是mssql的新手,但无法弄清楚上面的查询有什么问题,我只想在profileID = 1的地方包含所有字段,并从threadID中选择不同的值

3 个答案:

答案 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的简写。您要求的是一个查询,您在一个列上进行分组,但不会聚合其余列。这没有意义。