如何使用两个不同的列 mySQL 从查询而不是其他查询中获取数据? [复制]

Posted

技术标签:

【中文标题】如何使用两个不同的列 mySQL 从查询而不是其他查询中获取数据? [复制]【英文标题】:How can I get data from a query not in other query using two different columns, mySQL? [duplicate] 【发布时间】:2015-08-30 10:34:06 【问题描述】:

我尝试执行该查询,但由于错误 1241 无法正常工作,我不能在超过 1 列的情况下使用 NOT IN,并且不能在 NOT IN 之前使用两个属性。

SELECT * FROM futbol.puntos WHERE Equipo, Liga
NOT IN
(SELECT  der.Equipo,der.Liga,der.Puntos 
FROM (SELECT p.Equipo, p .Liga, p.Puntos,
    IF(@prev_liga != p.Liga,
        @rownum:= 1,
        @rownum := @rownum + 1) rank,
    @prev_liga:=p.Liga
FROM (SELECT Equipo, Liga, Puntos FROM puntosmitadliga GROUP BY Liga, Puntos, Equipo ORDER BY Liga, Puntos DESC) p, 
     (SELECT
            @rownum:= NULL,
            @prev_liga := 0) r) der WHERE der.rank <= 3 ORDER BY der.Liga, der.rank) GROUP BY Liga HAVING max(puntos);

我该如何解决?

【问题讨论】:

您的查询没有多大意义。例如,HAVING max(puntos) 简单地过滤掉所有puntos 的最大值为零或NULL 的行。你应该问另一个问题,提供样本数据和期望的结果,并解释你想要做什么。 【参考方案1】:
SELECT * FROM my_table;
+----------------+-------------+
| customerNumber | orderNumber |
+----------------+-------------+
|             40 |           1 |
|             30 |           2 |
|             40 |           3 |
|             20 |           4 |
|             30 |           5 |
+----------------+-------------+

SELECT * 
  FROM my_table 
 WHERE (customernumber,ordernumber) NOT IN ((40,1),(30,3));
+----------------+-------------+
| customerNumber | orderNumber |
+----------------+-------------+
|             30 |           2 |
|             40 |           3 |
|             20 |           4 |
|             30 |           5 |
+----------------+-------------+
4 rows in set (0.07 sec)

mysql>

【讨论】:

以上是关于如何使用两个不同的列 mySQL 从查询而不是其他查询中获取数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 3 个不同的列在 mysql 中选择行

如何匹配两个不同表中的列并将选定的列输出到 MySQL 中的第三个表?

如何使用具有不同列号pyspark的两个数据帧的并集

如何选择一个查询中的列不在其他查询的列之间的记录?

SQL:将查询输出更改为具有两个单独的列,而不是具有 2 个值的行

Django ORM:如何根据所有记录中的列获取唯一记录(需要模型对象而不是特定值对象)