> 백엔드 개발 > PHP 튜토리얼 > php+mysql 取字段值比较 相同则比较另一字段值

php+mysql 取字段值比较 相同则比较另一字段值

WBOY
풀어 주다: 2016-06-23 14:11:59
원래의
1127명이 탐색했습니다.

MySQL PHP

表结构
id             int 主健自增
mydate        datetime
price         int
flag          int  数值为1,2,3,4,5,6  优先取该值大的price
示例
id      mydate          price   flag
1       2013-05-30      200      2
2       2013-05-30      300      3
3       2013-05-31      150      2
4       2013-05-31      200      3
5       2013-06-01      200      2
6       2013-06-01      300      3

结果为
id      mydate          price   flag
1       2013-05-30      300      3
2       2013-05-31      200      3
3       2013-06-01      350      3


php代码如何写?很久没写过php代码了,先谢过

回复讨论(解决方案)

select * from (select * from tt order by flag desc) t group by mydate;

select id, mydate, max(price) as price, flag from (select * from tbl_name order by price desc) t group by mydate

这个不就是分组查询么?

SELECT * FROM (SELECT * FROM tORDER BY flag DESC , price DESC)ttGROUP BY mydate
로그인 후 복사

楼主是不是先比较flag大小,如果flag大小相同则再比较price大小?试试4楼的方法(其实这个问题我也不会,是完全看得2楼的;我本来想group by xx order by xxx,发现使用了group by 是直接取第一个,后面的order by 好像失效了。也才明白为什么二楼那样写了)

select * from tt a where not exists(select 1 from tt
 where a.mydate=mydate and a.flag  or
 a.mydate=mydate and a.flag=flag and a.price  )

http://bbs.csdn.net/topics/390476456 这个帖子我拿到了sql版块去问了下。确认了下我那方法好像没问题,我今天也也收获呵呵。
楼上的大神很热心,在我那个帖子里回答了,也在这里回答了。但是我们很少这样用。应该是标准SQL语法

to WWWWA:指定日期期间这个条件怎么加上去?

to WWWWA:指定日期期间这个条件怎么加上去?

select * from tt a where not exists(select 1 from tt
  where (a.mydate=mydate and a.flag   or
  a.mydate=mydate and a.flag=flag and a.price   and mydate between '2013-05-30 ' and '2013-06-01 '
  )
and a.mydate between '2013-05-30 ' and '2013-06-01 '

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿