如何在 MySQL 中选择满足不同行不同条件的值?


您可以使用 IN() 和 GROUP BY 来选择满足不同行不同条件的值。语法如下:

SELECT yourColumnName1 from yourTableName
WHERE yourColumnName2 IN(value1,value2,.....N)
GROUP BY yourColumnName1
HAVING COUNT(DISTINCT yourColumnName2)=conditionValue;

为了理解上述语法,让我们首先创建一个表。创建表的查询如下:

mysql> create table DifferentRows
-> (
-> FirstRow int,
-> SecondRow int
-> );
Query OK, 0 rows affected (0.72 sec)

使用 insert 命令在表中插入一些记录。查询如下:

mysql> insert into DifferentRows values(10,10);
Query OK, 1 row affected (0.15 sec)

mysql> insert into DifferentRows values(10,100);
Query OK, 1 row affected (0.17 sec)

mysql> insert into DifferentRows values(10,300);
Query OK, 1 row affected (0.16 sec)

mysql> insert into DifferentRows values(20,100);
Query OK, 1 row affected (0.18 sec)

使用 select 语句显示表中的所有记录。查询如下:

mysql> select *from DifferentRows;

以下是输出。

+----------+-----------+
| FirstRow | SecondRow |
+----------+-----------+
| 10       | 10        |
| 10       | 100       |
| 10       | 300       |
| 20       | 100       |
+----------+-----------+
4 rows in set (0.00 sec)

以下是如何选择满足不同行不同条件的值的查询。这将给出所有具有 SecondRow 为 10、100、300 的不同的 FirstRow 记录。

mysql> select FirstRow from DifferentRows
-> where SecondRow IN(10,100,300)
-> group by FirstRow
-> having count(distinct SecondRow)=3;

以下是输出。

+----------+
| FirstRow |
+----------+
| 10       |
+----------+
1 row in set (0.00 sec)

更新于: 2020-06-25

426 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告