MySQL - как узнать количество строк - PullRequest
1 голос
/ 26 августа 2011

У меня есть эти данные в базе данных:

+----+------------+---------+
| id | col1       | col2    |
+----+------------+---------+
|  1 |          3 |       2 |
|  2 |          2 |       3 |
|  3 |          4 |       5 |
+----+------------+---------+

Я пытаюсь сделать запрос, который даст мне количество строк, в которых одинаковые номера. Я знаю значение одного из них (цифры).

В этом случае одинаковые цифры 2 и 3 (в столбцах col1 и col2 ) - я пытаюсь получить из базы данных номер 2 (две строки). У меня всегда в наличии один из двух номеров - в данном случае номер 3 .

Возможно ли сделать этот запрос? Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

Для очень узкого сценария, который вы указали, я бы попробовал:

select count(*)
from myTable mt1 
     inner join myTable mt2 on (mt1.col1 = mt2.col2 AND mt2.col1 = mt1.col2)
and mt1.col1 = 3 --here goes the known value

Это работает только для данных, которые вы разместили. Пожалуйста, дайте нам знать количество для следующего сценария:

+----+------------+---------+
| id | col1       | col2    |
+----+------------+---------+
|  1 |          3 |       2 |
|  2 |          2 |       3 |
|  3 |          3 |       2 |
|  4 |          3 |       5 |
|  5 |          4 |       5 |
+----+------------+---------+
0 голосов
/ 26 августа 2011

С помощью этого запроса:

select count(*) count_rows
from table1 
where col1=3 or col2=3
group by concat(IF(col1<col2, col1, col2), ',', IF(col1<col2, col2, col1))

вы получите результат 2.

Замените 3 из запроса в предложении where, если есть другой ввод.

Значение для concat(IF(col1<col2, col1, col2), ',', IF(col1<col2, col2, col1)) будет "2,3" для записей 1-2, (и "4,5" для третьей записи).

0 голосов
/ 26 августа 2011

Вы ищете что-то вроде

SELECT (col1+col2) , COUNT(*) AS num_rows
FROM table1
WHERE col1 =3 OR col2 =3
GROUP BY (col1+col2)
HAVING num_rows >1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...