SQL-запрос для конкретных условий - PullRequest
0 голосов
/ 04 апреля 2019

Нужна помощь с оператором SQL для следующих условий. Содержит 3 столбца в таблице (TableName), Sno (уникальные записи), Name (есть несколько записей, которые могут иметь одно и то же имя), Condition (True, False). Нужно извлечь все записи, только если последняя запись верна.

Пробовал ниже запрос

select Sno(Max),Name,Condition 
from TableName 
where Conditon = 'True' 
group by Name,Conditon;

Ожидается: если последняя запись (SNo (Max)) имеет значение = true (столбец условия), возвращает эту запись, в противном случае записи не отображаются.

Фактически: отображаются все записи, включая истинные и ложные условия

Ответы [ 4 ]

1 голос
/ 04 апреля 2019

Я думаю, вы ищете это:

SELECT Sno, Name, Condition 
FROM TableName 
WHERE Conditon = 'True' AND Sno=(SELECT MAX(Sno) FROM TableName);

Остерегайтесь типов: если столбец 'Condition' равен Boolean Предложение WHERE должно быть

WHERE Condition IS TRUE AND ... 
1 голос
/ 04 апреля 2019

Я думаю, это то, что вы ищете.
Если таблица такая:
enter image description here

[Рекомендуется использовать tinyint(1) в качестве логического значения в MySQL.]

Вы можете использовать этот запрос:

SELECT a.*
FROM `TableName` a
LEFT JOIN `TableName` b ON(a.`Sno` < b.`Sno`
                           AND a.`Name` = b.`Name`)
WHERE a.`Conditon` = 1
  AND b.`Sno` IS NULL

чтобы получить этот результат:
enter image description here

Этот способ будет работать более эффективно, чем использование внутреннего подзапроса. Особенно в больших столах.

0 голосов
/ 04 апреля 2019
SELECT * 
FROM   tablename 
WHERE  sno IN (SELECT Sno(max) 
               FROM   tablename 
               GROUP  BY NAME) 
       AND condition = 'true' 
0 голосов
/ 04 апреля 2019

Можно использовать оператор where в подзапросе для условия TRUE и Sno = max (Sno)

select  * 
from TableName 
where exist (
  select  * 
  from TableName 
  where  Condition = 'True'  
  and  Sno = (
  select  max(Sno) 
  from TableName 
  )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...