i'am пытается получить следующую информацию из таблицы:MySQL Query - Смесь сортировки и группировки
- сортировка по «Ъ» (таблица А по возрастанию, по убыванию таблице B)
- все «U «с конкретным значением появляется первое (в этом примере u = 3) - тогда порядок не важен
- N (NULL) всегда в конце
- no« r »может происходить дважды (но все разные« r », должны присутствовать)
С "ORDER BY IFNULL (u, 99999999)! = 3, u, b" критерий 1, 2 и 3 работает, но для последнего я понятия не имею.
С DISTINCT Я не достигаю цели, так же как и GROUP BY.
У кого-нибудь есть идеи? Большое спасибо заранее.
start table target table A
+----------------+ +----------------+
| id | r | u | b | | id | r | u | b |
+----------------+ +----------------+
| 1 | 1 | 1 | 9 | | 18 | 5 | 3 | 1 |
| 2 | 1 | 3 | 4 | | 2 | 1 | 3 | 4 |
| 3 | 1 | 4 | 6 | | 15 | 4 | 3 | 7 |
| 4 | 1 | 5 | 5 | | 11 | 3 | 3 | 8 |
| 5 | 2 | 1 | 2 | | * | 2 | * | * |
| 6 | 2 | 2 | 1 | | 21 | 6 | N | N |
| 7 | 2 | 4 | 5 | +----------------+
| 8 | 2 | 5 | 7 |
| 9 | 3 | 1 | 4 |
| 10 | 3 | 2 | 3 |
| 11 | 3 | 3 | 8 |
| 12 | 3 | 5 | 2 | target table B
| 13 | 4 | 1 | 3 | +----------------+
| 14 | 4 | 2 | 2 | | id | r | u | b |
| 15 | 4 | 3 | 7 | +----------------+
| 16 | 4 | 4 | 6 | | 11 | 3 | 3 | 8 |
| 17 | 5 | 2 | 9 | | 15 | 4 | 3 | 7 |
| 18 | 5 | 3 | 1 | | 2 | 1 | 3 | 4 |
| 19 | 5 | 4 | 6 | | 18 | 5 | 3 | 1 |
| 20 | 5 | 5 | 4 | | * | 2 | * | * |
| 21 | 6 | N | N | | 21 | 6 | N | N |
+----------------+ +----------------+
Как вы выбираете, какие строки брать, когда есть более 2 значения на 'столбце r'? И я не уверен, что понял вас, это 'targetA' и' targetB' вывод 'StartTable'? – sagi
Можете ли вы показать свой код? –
Начальная таблица - таблица в db, а целевые таблицы - мои желаемые результаты. – Seamanx