相关疑难解决方法(0)

根据单个不同列选择唯一行

我想选择有a的行distinct email,请参阅下面的示例表:

+----+---------+-------------------+-------------+
| id | title   | email             | commentname |
+----+---------+-------------------+-------------+
|  3 | test    | rob@hotmail.com   | rob         |
|  4 | i agree | rob@hotmail.com   | rob         |
|  5 | its ok  | rob@hotmail.com   | rob         |
|  6 | hey     | rob@hotmail.com   | rob         |
|  7 | nice!   | simon@hotmail.com | simon       |
|  8 | yeah    | john@hotmail.com  | john        |
+----+---------+-------------------+-------------+
Run Code Online (Sandbox Code Playgroud)

期望的结果是:

+----+-------+-------------------+-------------+
| id | title | email …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

68
推荐指数
3
解决办法
13万
查看次数

如何为MySQL中的每个组选择第一行?

在C#中它会是这样的:

table
   .GroupBy(row => row.SomeColumn)
   .Select(group => group
       .OrderBy(row => row.AnotherColumn)
       .First()
   )
Run Code Online (Sandbox Code Playgroud)

Linq-To-Sql将其转换为以下T-SQL代码:

SELECT [t3].[AnotherColumn], [t3].[SomeColumn]
FROM (
    SELECT [t0].[SomeColumn]
    FROM [Table] AS [t0]
    GROUP BY [t0].[SomeColumn]
    ) AS [t1]
OUTER APPLY (
    SELECT TOP (1) [t2].[AnotherColumn], [t2].[SomeColumn]
    FROM [Table] AS [t2]
    WHERE (([t1].[SomeColumn] IS NULL) AND ([t2].[SomeColumn] IS NULL))
      OR (([t1].[SomeColumn] IS NOT NULL) AND ([t2].[SomeColumn] IS NOT NULL)
        AND ([t1].[SomeColumn] = [t2].[SomeColumn]))
    ORDER BY [t2].[AnotherColumn]
    ) AS [t3]
ORDER BY [t3].[AnotherColumn]
Run Code Online (Sandbox Code Playgroud)

但它与MySQL不兼容.

mysql grouping group-by

59
推荐指数
10
解决办法
12万
查看次数

GROUP BY子句没有聚合函数的任何原因?

我(彻底)学习SQL,并且遇到了这个GROUP BY条款.

GROUP BY根据您提供的参数聚合或分组结果集.如果在查询中使用此子句,则可以对结果集执行聚合函数,以查找结果集的统计信息,如查找平均值(AVG())或频率(COUNT()).

我的问题是:GROUP BY语句在没有伴随聚合函数的情况下是否有用?

更新 使用GROUP BYas DISTINCT(可能)是一个坏主意的同义词因为我怀疑它更慢.

mysql sql group-by aggregate

22
推荐指数
3
解决办法
2万
查看次数

在没有ANY()的情况下哪个是最便宜的聚合函数

如果DBMS没有ANY()聚合函数,我通常使用MAX()或MIN().

在mySQL和MS-SQL中有没有更便宜的东西?

mysql sql t-sql

8
推荐指数
1
解决办法
6794
查看次数

没有 GROUP BY 子句的 MySQL 聚合函数

在 MySQL 中,我观察到尽管没有 GROUP BY 子句,但在 SELECT 列表中使用 AGGREGATE FUNCTION 的语句会被执行。如果我们这样做,其他 RDBMS 产品(如 SQL Server)会抛出错误。

例如,SELECT col1,col2,sum(col3) FROM tbl1;在没有任何错误的情况下执行并返回 col1、col2 的第一行值和 col3 的所有值的总和。上述查询的结果是单行。

谁能告诉为什么 MySQL 会发生这种情况?

提前致谢!!

mysql sql-server

5
推荐指数
1
解决办法
8733
查看次数

mySQL从另一个选择列表中选择

有一张桌子是这样的:

id | 名称| 父母 信息
 1 | AA | | X
 2 | BB | |
 3 | CC | | X
 4 | DD | 1 |
 5 | EE | 1 |
 6 | FF | 2 |
 7 | GG | 2 |
 8 | HH | 3 |
 8 | HH | 4

我想用mySQL / PHP这样完成:

从表WHERE信息(如“ x”)中选择ID

和在PHP

对于我在第一个请求的每个id结果中:
  SELECT ID,名称FROM表,其中idparent = i ORDER BY RAND()LIMIT 1;
endFor

例如,结果可能是:

4 | DD
8 |小时 …

mysql subquery

5
推荐指数
1
解决办法
1万
查看次数

多个字段检查SQL Server 2008中的case语句

MySQL中的Case语句语法: -

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE
Run Code Online (Sandbox Code Playgroud)

SQL Server 2008中的Case语句语法: -

Simple CASE expression: 
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 
Run Code Online (Sandbox Code Playgroud)

按照SQL SERVER CASE语句语法

我已经解释了差异,以便用户可以理解我在这里尝试说的内容

我在MySql中有以下代码: -

SELECT sum(case when Year=2014 or purchased=0 then 0 else TC.TOTAL_SP_COST-TC.TOTAL_CP_COST end) as EARNINGs

from TABLE TC
Run Code Online (Sandbox Code Playgroud)

如果你看得正确,case语句有2个字段(Year和purchase)

当我在MS SQL SERVER 2008中尝试相同的代码时,当我尝试在SQL SERVER中的case语句中添加2个字段时,我在"或"下面有一个红线.

SELECT sum(case (Year or purchased) when 2014 then …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-server-2008

0
推荐指数
2
解决办法
1万
查看次数