В MySql у меня есть две таблицы, A и B.
A имеет столбцы A.id, B имеет столбцы B.id и B.aid.
или в каждом ряду A у меня есть много рядов B. И значение B.aid = A.id
конечно.
Теперь мне нужно получить список значений в A, но мне нужно упорядочить их в соответствии с B.
В частности, если у меня есть две строки в A: a1 и a2. Каждый будет иметь ряд строк в B:
B11, B12, B13, ...
а также
b21, b22, b23, ...
Теперь мне нужно заказать A от того, который связан с самым высоким b.id до того, который имеет второе самое высокое, и так далее. (конечно, одна строка появляется только один раз).
Я пробовал это:
SELECT a.id FROM a, b WHERE a.id=b.aib ORDER BY b.id DESC
Я действительно получил все значения в правильном порядке, но каждое значение A появилось бы n раз, если n было числом строк в B, связанных с этой строкой в A.
Как мне избежать этого, чтобы получить только одно значение.
Я подумываю о том, чтобы взять весь список, а затем исключить все неуникальные ценности, но я боюсь, что, как только веб-сайт станет большим, он больше не сможет быть выполнимым.
(Если вам интересно, это для программирования факсимиле доски обсуждений, таблица A - это нить, а таблица B - запись, и я хочу, чтобы была страница, на которой представлены все темы. , но в порядке потока, который выполнил последнее действие позже)
Большое спасибо,
Pietro
P.S. MySql - не моя вещь, поэтому, пожалуйста, изложите решение :))
UPDATE:
Фактический код является более сложным, поскольку он также включает пользователей и тому подобное. Итак, я смотрю на что-то вроде:
SELECT DISTINCT a.id, a.question, a.roundid, a.phase, users.username, users.id
FROM a, users, b
WHERE a.phase = 0 AND users.id = a.usercreatorid AND b.experimentid = a.id
ORDER BY b.id DESC
Я попробовал DISTINCT, как предложено ниже, но он не работает. Я получаю все темы (то есть вопросы) уникально, но они не совсем упорядочены. Я не знаю почему, но кажется, что он не выбирает случайную строку из b, и это обычно идет в правильном направлении, но это не строка с максимумом (b.id). ТАК отличное не сортирует между рядами правильным способом. Теперь я посмотрю на другие предложенные решения.