在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
-> );

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

mysql> insert into DifferentRows values(10,10);

mysql> insert into DifferentRows values(10,100);

mysql> insert into DifferentRows values(10,300);

mysql> insert into DifferentRows values(20,100);

使用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)