mysql怎么一次查询多个结果

mysql怎么一次查询多个结果,第1张

可不可以用三个user_photo 表相连接,从中直接选出三个,像这样:

select a.photo_path as a_path,b.photo_path as b_path,c.photo_path as b_path from user_photo a,user_photo b,user_photo c

where a.userid='$a' and b.userid='$b' and c.userid='$c' order by rand() limit 1

但这样效率可能会很差,因为后面的Order By Rand()和前面的多表连接

可能改成这样:

select a.photo_path as a_path,b.photo_path as b_path,c.photo_path as c_path from (select * from user_photo where userid='$a') as a join (select * from user_photo where userid='$b') as b join (select * from user_photo where userid='$c') as c order by rand() limit 1

如果您查询十次一条数据

通常是要建立十次连接。

如果您查询一次十条数据。

那么只要建立一次连接。

建立连接需要经过一些步骤,实例若干object。

这个差距是显而易见的。

我做过类似的查询,就是用字典项表的数据id列,与数据表的字符串列做instr比较,比较时,两个数据分别在前后加',',防止第一个和最后一个字典项无法查找出来。

举个例子,数据表

字典表 dict

idname

12wifi

13冰箱

14洗衣机

15电视

业务表 query_table

idquery_str

1 12,13,14,15

2 12,14

3 14,15

SELECT *

FROM dict a,query_table b

WHERE INSTR(CONCAT(CONCAT(',',b.query_str),','), CONCAT(',', CONCAT(a.id,',')))>-0 AND b.id=1

看实际效果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8318891.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存