如何select独一无二?
How to select unique?
我正在处理现场音乐数据库,但我想不出如何进行查询以获取正在举办活动的艺术家。
我有两个表:artist
(包含 ID、名称、描述等)和 event_artist
(多对多关系)具有 artist_id
和 event_id
列。
return knex('event_artist')
.distinct('artist_id')
.join('artist', 'event_artist.artist_id', 'artist.id')
.select('*')
.offset(offset)
.limit(howMany)
这个 returns 重复的 ID,我不想要。我该如何解决这个问题?
这应该留给 join 而不仅仅是 Join-
return knex('event_artist')
.leftJoin('artist', 'event_artist.artist_id', 'artist.id')
.offset(offset)
.limit(howMany)
您正在寻找一个查询,该查询选择在 event_artist 列中有行的艺术家行。
在SQL中可以写成exists
select
*
from
artists as a
where
exists (
select
*
from
event_artist as ea
where
ea.artist_id = a.id
)
在knex
中可以写成
knex('artists as a')
.whereExists(
knex
.select('*')
.from('event_artists as ea')
.whereRaw('ea.artist_id = a.id')
)
我正在处理现场音乐数据库,但我想不出如何进行查询以获取正在举办活动的艺术家。
我有两个表:artist
(包含 ID、名称、描述等)和 event_artist
(多对多关系)具有 artist_id
和 event_id
列。
return knex('event_artist')
.distinct('artist_id')
.join('artist', 'event_artist.artist_id', 'artist.id')
.select('*')
.offset(offset)
.limit(howMany)
这个 returns 重复的 ID,我不想要。我该如何解决这个问题?
这应该留给 join 而不仅仅是 Join-
return knex('event_artist')
.leftJoin('artist', 'event_artist.artist_id', 'artist.id')
.offset(offset)
.limit(howMany)
您正在寻找一个查询,该查询选择在 event_artist 列中有行的艺术家行。
在SQL中可以写成exists
select
*
from
artists as a
where
exists (
select
*
from
event_artist as ea
where
ea.artist_id = a.id
)
在knex
中可以写成
knex('artists as a')
.whereExists(
knex
.select('*')
.from('event_artists as ea')
.whereRaw('ea.artist_id = a.id')
)