Mysql 选择同一列上的多个位置
我有一个数据库,里面有一群被分成不同颜色的狗:红色、绿色和黄色 Name Color --------------- Dog1 Green Dog2 Green Dog3 Yellow Dog4 Yellow Dog5 Red Dog6 Red etc. 假设我有一张有100只狗的桌子,然后我想把它们分成不同的一组,每一组有4只狗。问题是红狗和绿狗不能在同一个温度下生存 我已经尝试了MongoDB和SQL数据库,但我还不能确定这是否可行 在SQL中,我尝试了: SELECT * FROM Dogs WHERE color IN ('green', 'yellow') OR color IN ('red', 'yellow') ORDER BY RAND() LIMIT 4;Mysql 选择同一列上的多个位置,mysql,sql,Mysql,Sql,我有一个数据库,里面有一群被分成不同颜色的狗:红色、绿色和黄色 Name Color --------------- Dog1 Green Dog2 Green Dog3 Yellow Dog4 Yellow Dog5 Red Dog6 Red etc. 假设我有一张有100只狗的桌子,然后我想把它们分成不同的一组,每一组有4只狗。问题是红狗和绿狗不能在同一个温度下生存 我已经尝试了MongoDB和SQL数据库,但我还不能确定这是否可行 在SQL中,我尝
但是红色和绿色仍然可以一起选择。有人知道如何实现这一点吗?假设您的原始表名为temp:
declare @holding table (name varchar(max), color varchar(max), heat int)
declare @name varchar(max)
declare @color varchar(max)
declare @heat1 int
declare @heat2 int
declare @heat3 int
declare @heat4 int
declare @iterator int =1
while @iterator<=(Select max(cast(replace(name,'dog','') as int)) from #temp)
begin
select @color= color, @name=name from #temp where name='dog'+cast(@iterator as varchar(max))
select @heat1=count(*) from @holding where heat=1
select @heat2=count(*) from @holding where heat=2
select @heat3=count(*) from @holding where heat=3
select @heat4=count(*) from @holding where heat=4
if @color = 'red'
begin
if @heat1>=@heat2
insert @holding
select @name, @color, 2
else
insert @holding
select @name, @color, 1
end
if @color = 'yellow'
begin
if @heat1<=@heat2 and @heat1<=@heat3 and @heat1<=@heat4
insert @holding
select @name, @color, 1
else if @heat2<=@heat1 and @heat2<=@heat3 and @heat2<=@heat4
insert @holding
select @name, @color, 2
else if @heat3<=@heat1 and @heat3<=@heat2 and @heat3<=@heat4
insert @holding
select @name, @color, 3
else
insert @holding
select @name, @color, 4
end
if @color = 'green'
begin
if @heat3>=@heat4
insert @holding
select @name, @color, 4
else
insert @holding
select @name, @color, 3
end
set @iterator=@iterator+1
end
select * from @holding
order by heat, color
这听起来很傻,但你就不能按颜色点吗?你的热身会像全绿、全黄等一样无聊,但它会解决你的问题 也许像
SELECT * FROM (
SELECT *, CASE WHEN Color = 'Green' THEN 1 ELSE CASE WHEN Color = 'Yellow' THEN 2 ELSE 3 END END AS o FROM dogs
) x ORDER BY x.o
用你正在使用的数据库标记你的问题。请不要标记不同的技术。如果您有SQL问题,请向适当的听众提问。如果您有MongoDB或其他引擎问题,那就是,没有什么事情是一样的,也没有什么问题是不同的引擎之间的最佳答案。黄色的狗不会在这里重复吗?我想他只关心红色和绿色的存在separate@DanielMarcus这只给了我四只热狗。我有一张桌子,桌上有100只狗,我想把它们都放在不同的暖炉里,一只狗只能放在一个暖炉里,而且绿色和红色的狗不能放在同一个暖炉里。我不知道这是否可能?我明白了-你在使用sql server吗?如果是这样的话,你可以在每一个循环中决定放哪种热量into@DanielMarcus不,我没有使用sql server,但这听起来是个好主意!你有什么建议吗?或者你知道怎么做的教程吗?是的,我想这会解决我的问题,谢谢!唯一的问题是,如果我还有5只黄狗,我该怎么办。既然一场比赛中应该只有4只狗,我该如何处理最后一只狗。。。它应该放在一个绿色或红色的暖气,这需要更多的狗在暖气。是的,我有点好奇。首先,我假设我们知道狗的总数是4的倍数,对吗?那就意味着你再也不会有5条狗了。我写的这个查询的顺序是GGGYYRR,如果我们假设这个数字可以被4整除,那么这个解决方案就是可能的原因,例如,GGRR是不可解的,那么这个方法会产生一个解决方案。问题是,我想创建的应用程序是在比赛前随机进行热身,每次比赛的狗数会有所不同,就像参加比赛的狗会不时不同一样。。。