2015-12-18 7 views
0

В настоящее время я использую этот запрос для извлечения всех значений из таблицы, где invoiceNo отличается.Как выбрать последнее значение в конкретном столбце базы данных mysql?

SELECT * FROM `selected_items` WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) GROUP BY invoiceNo; 

Это моя структура

enter image description here

стол И я хотел бы получить доступ ко всему от последнего row.My текущего запроса дает мне первый row.Thank вас :)

+1

насчет ORDER BY? –

+0

Это дает один ряд? SELECT * FROM selected_items WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) GROUP BY invoiceNo order by desc; –

+0

@ bub вы можете привести пример. Я очень новичок в программировании благодаря :) –

ответ

0

использование order by rownum или GROUP BY

Select * From (
SELECT t.*, 
     @rownum := @rownum + 1 AS rank 
    FROM selected_items t, 
     (SELECT @rownum := 0) r order by rank DESC 
) si GROUP BY si.invoiceNo 
+0

в образе счета нет, дата обе все одинаковы –

+0

thats просто фиктивные данные. Я пробовал ваше решение, но оно все еще дает мне первую строку. –

+2

max (всего) может быть во второй строке, тогда он вернет вторую строку не последнюю .. –

0

Просто попробуйте этот,

SELECT * FROM selected_items WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) GROUP BY invoiceNo ORDER BY custInfo DESC LIMIT 1;

+0

Вы пробовали этот. –

+0

Да, я попробовал, он дал мне первую строку –

0

Вы должны использовать ORDER BY имя столбца, так что вы получите последнюю запись первого

SELECT * FROM `selected_items` WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) GROUP BY invoiceNo ORDER BY invoiceNo DESC LIMIT 1; 
+0

, вы также можете дать запрос –

+0

Я пробовал этот SELECT * FROM 'selected_items' WHERE invoiceNo IN (SELECT DISTINCT (invoiceNo) AS invoiceNo FROM selected_items) ORDER BY invoiceNo; но это дает все строки, в которых я хочу отличную строку. –

+0

использовать 'ORDER BY column_name ASC | DESC WHERE id = ***', поэтому вы сначала получите последнюю запись для определенного идентификатора. @ user3295583 Не могли бы вы рассказать мне более подробную информацию об этом запросе.! потому что этот запрос не ясен. –

0

это ?:

SELECT DISTINCT invoiceNo, barcode, description, weight, rate, makingAmt, net_rate, itemTotal, vat 
FROM selected_items 
GROUP BY invoiceNo 
ORDER BY date DESC LIMIT 1; 

получить последний строка должна содержать некоторые поля, содержащие уникальные значения.

+0

должны быть уникальные значения, такие как id, date или что-то еще. –

+0

Я устал от этого, но он дает только номера счетов –

+0

вам нужно выбрать оставшиеся имена столбцов –

0

Если вы хотите, чтобы получить высокий sum_total каждого invoiceNo, то вы можете сделать что-то вроде этого,

SELECT invoiceNo, MAX(sum_total) AS sumTotal 
FROM selected_items 
GROUP BY invoiceNo; 
+0

Это все еще дает мне только первый ряд –

Смежные вопросы