在 MySQL 中,选择不同行上满足不同条件的值?

mysqlmysqli database

您可以使用 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)

相关文章