select a.* ,b.flow_id from daiban_order_serve as a left join daiban_order_serve_flow as b on b.daiban_serve_id = a.id where 1 and supplier_id = 23 and b.uid = 100031 and b.is_kais = 2 and b.is_accept = 1 order by create_time desc limit 0,20 帮我优化一下这个mysql语句去除重复daiban_serve_id值的,但是要优先显示is_kais不等于2的
时间: 2023-05-21 13:04:30 浏览: 167
好的,这个 mysql 语句可以这样优化:
SELECT DISTINCT a.*, b.flow_id
FROM daiban_order_serve AS a
LEFT JOIN (
SELECT daiban_serve_id, MAX(flow_id) flow_id
FROM daiban_order_serve_flow
WHERE uid = 100031 AND is_accept = 1
GROUP BY daiban_serve_id
) AS b
ON b.daiban_serve_id = a.id
WHERE supplier_id = 23 AND IFNULL(b.is_kais != 2, true)
ORDER BY create_time DESC
LIMIT 0, 20;
这个语句会对 daiban_order_serve 和 daiban_order_serve_flow 两张表进行左联接,然后使用子查询获取每个 daiban_serve_id 对应的最大流程 ID 和去重后的结果集。
注意我用了 IFNULL(b.is_kais != 2, true) 来判断 is_kais 不等于 2,这样既可以显示 is_kais 不等于 2 的记录,也可以显示没有记录的 daiban_order_serve。
相关问题
DaibanOrderServeFlow::model()->findByAttributes(array('daiban_serve_id'=>$id,'is_kais'=>[1,2]))改一下,添加查询flow_id最大的一条
记录的代码应该是这样的:
DaibanOrderServeFlow::model()->findByAttributes(array(
'daiban_serve_id' => $id,
'is_kais' => array(1, 2),
), array(
'order' => 'flow_id DESC',
'limit' => 1,
));
这个代码会查询指定的 $id 和 $is_kais 值下所有记录中,根据 flow_id 从大到小排序,返回最大的一条记录。
``` <img :src="item.icon">```icon: './imgs/daiban.png',vue2项目找不到图片怎么解决
在Vue2项目中,如果`<img :src="item.icon">`引用的图片路径`./imgs/daiban.png`找不到,可以尝试以下几个解决方案:
1. **检查文件路径**:确认图片文件是否存在,并且路径是否书写正确。确保图片位于项目的`imgs`目录下,如果是相对路径,需要确保是从当前组件的目录开始计算。
2. **绝对路径**:如果图片不在默认的静态资源目录(通常在`public`或`static`文件夹),你可以提供完整的URL,如`"/imgs/daiban.png"`,或者相对于服务器根目录的地址。
3. **模块化引入**:在Vue 2中,推荐使用`require.context`配合`import`来动态导入图片,例如:
```javascript
const imgRequire = require.context('~/imgs', true, /\.(png|jpg|jpeg)$/);
item.icon = imgRequire(`/${item.icon}`);
```
4. **懒加载**:对于非首屏加载的图片,可以使用`v-if`或`v-show`配合`lazy`属性来延迟加载,避免因网络问题导致页面空白。
5. **调试工具**:使用开发者工具查看请求是否发出,检查是否有跨域或权限问题。
如果以上都检查无误,但仍无法显示,可能是浏览器缓存问题,试着清理一下缓存再试试。
阅读全文