PHP - удаление строки на основе значений в столбце postgresql - PullRequest
0 голосов
/ 25 мая 2018

Я создаю таблицу в postgresql с PHP.

Результирующая таблица

enter image description here

Есть много строк с одинаковыми значениями, за исключением первого столбца, это уникальныйЯ БЫ.Когда я пытаюсь удалить на основе похожих значений в gene_id, searchterm и type.

Поэтому я использовал следующий код:

$sql = "SELECT DISTINCT gene_id FROM searchterms";

Или

$sql = "SELECT DISTINCT ON (gene_id,searchterm,types) * FROM searchterms";

После выполнения этого кода я все еще получил тот же результат.Я бы хотел оставить только строку с идентификатором 4.

Ответы [ 4 ]

0 голосов
/ 07 июня 2018

Вы должны предотвратить их вставку в первую очередь.

Например

if(geneid == 0){
     break;
}else{
     # insert query}
0 голосов
/ 25 мая 2018
Select * from searchterms WHERE gene_id <> 0 AND searchterm <> 0 AND types <> 0 group by gene_id,searchterm,types
0 голосов
/ 25 мая 2018

Я думаю, что отличный не будет работать в этом случае.потому что, если вы дали отличительный, он все равно покажет вам 2 записи, т.е. gene_id = 0 и gene_id = 1253246.

Так что, чтобы избежать этих других записей, вам, вероятно, нужно проверить условие что-то вроде gene_id <> 0 илиgene_id> 0

0 голосов
/ 25 мая 2018

Вы пытаетесь удалить все пустые строки?

DELETE FROM searchterms WHERE gene_id = 0

Что касается непустых строк с дубликатами, вам нужно выбрать строки с более чем одной:

SELECT gene_d, COUNT(*) c FROM table GROUP BY name HAVING c > 1;

Затем вы можете извлечь один элемент из массива, а затем удалить другие идентификаторы.

Чтобы остановить добавление дубликатов, просто выполните сначала запрос SELECT, и, если строки не найдены, выполните командуINSERT.

...