仅从COLUMN返回唯一值

时间:2019-07-26 10:29:56

标签: mysql sql

我目前有一个简单的表格,看起来像这样:

+-----------------------+--------------+-------------------+
|       "TheTime"       |   "Course"   |      "Horse"      |
+-----------------------+--------------+-------------------+
| "2019-07-26 16:10:00" | "ASCOT"      | "Anythingtoday"   |
| "2019-07-26 16:20:00" | "UTTOXETER"  | "Blazon"          |
| "2019-07-26 16:45:00" | "ASCOT"      | "Harry Hurricane" |
| "2019-07-26 18:30:00" | "YORK"       | "Qaaraat"         |
| "2019-07-26 18:30:00" | "YORK"       | "Russian Realm"   |
| "2019-07-26 18:35:00" | "DOWN ROYAL" | "Abstraction"     |
| "2019-07-26 18:50:00" | "WEXFORD"    | "Naughty Molly"   |
| "2019-07-26 19:50:00" | "WEXFORD"    | "Persian Wind"    |
| "2019-07-26 20:20:00" | "WEXFORD"    | "Whoyakodding"    |
+-----------------------+--------------+-------------------+

我想删除“ TheTime”列不匹配的所有行。

最终结果如下所示

+-----------------------+--------------+-------------------+
|       "TheTime"       |   "Course"   |      "Horse"      |
+-----------------------+--------------+-------------------+
| "2019-07-26 16:10:00" | "ASCOT"      | "Anythingtoday"   |
| "2019-07-26 16:20:00" | "UTTOXETER"  | "Blazon"          |
| "2019-07-26 16:45:00" | "ASCOT"      | "Harry Hurricane" |
| "2019-07-26 18:35:00" | "DOWN ROYAL" | "Abstraction"     |
| "2019-07-26 18:50:00" | "WEXFORD"    | "Naughty Molly"   |
| "2019-07-26 19:50:00" | "WEXFORD"    | "Persian Wind"    |
| "2019-07-26 20:20:00" | "WEXFORD"    | "Whoyakodding"    |
+-----------------------+--------------+-------------------+

这是因为18:30约克有2匹马在奔跑

"2019-07-26 18:30:00"   "YORK"  "Qaaraat"
"2019-07-26 18:30:00"   "YORK"  "Russian Realm"

我知道我无法对此类查询使用“分组依据”或“ DISTINCT”,该怎么办?

2 个答案:

答案 0 :(得分:1)

您可以使用not exists

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.thetime = t.thetime and
                        t2.course = t.course and
                        t2.horse <> t.horse
                 );

或者,您可以使用聚合:

select thetime, course, max(horse)
from t
group by thetime, course
having count(*) = 1;

如果时间/课程组合只有一行,则max(horse)返回那匹马的名字。

答案 1 :(得分:1)

您需要按from flask import Flask from flask_restful import Resource, Api, reqparse app = Flask(__name__) api = Api(app) class Classifier(Resource): def get(self): parser = reqparse.RequestParser() parser.add_argument('sepal_length', type=float) parser.add_argument('sepal_width', type=float) parser.add_argument('petal_length', type=float) parser.add_argument('petal_width', type=float) args = parser.parse_args() print(f"Arguments: {args}") result = "Iris-setosa" return f"Classification result for args {args}: {result}" api.add_resource(Classifier, '/classify') if __name__ == '__main__': app.run(debug=True, host='0.0.0.0') 分组,然后仅过滤具有1个成员的组:

TheTime