2016-12-06 64 views
1

您如何在Ecto中做WHERE != "something"?我使用的是PostgresElixir + Ecto:簡單的WHERE!=查詢

這是我(不工作):

u = User |> Ecto.Query.where(id: not 444) |> MyApp.Repo.one

+2

'|>其中([u],u.id!= 444)'? – Dogbert

+0

請給我所有的藥劑知識@Dogbert – Edmund

+0

這裏有各種布爾運算符的引用:http://elixir-lang.org/getting-started/basic-operators.html。我不確定你爲什麼不先嚐試'!='先。 –

回答

2

你需要使用外生查詢宏建此查詢。對於「表達式」基於語法,你可以通過一個列表與你想的表與綁定名稱的第一個參數:

User |> where([u], u.id != 444) 

欲瞭解更多信息,請查看documentation of where

+0

因爲我有'u = User |> where([u],u.id!= 444)MyApp.Repo.all'的結果,你知道我將如何從該列表中獲取第一個嗎? – Edmund

+2

您可以使用'|> hd'或做'[u | _] = User |> ...'但如果你只想要第一個結果,你應該做'where(...)|> limit(1)|> Repo.one'。 – Dogbert

+0

你會通過任何改變知道如何做WHERE NOT IN [數組]? http://stackoverflow.com/questions/41005307/elixir-ecto-how-to-do-where-not-in-array @Dogbert – Edmund