首页 > mysql查询数据问题

mysql查询数据问题


表a的一个字段,我需要根据表a这个字段的第一个数字,是表b中的id,现在我怎么优雅的取出我所需要的数据?
例子:
表a的share_imgurl的数据是3,4我只根据3在表b中进行查找


1.为了取出share_imgurl的第一个id,我用LEFT("3,4", LOCATE(",", "3,4")-1)这种方法。
2.由于题主没有给出数据表结构,我简单构造了两个表结构:

mysql> select * from tab_a;
+----+--------------+
| id | share_imgurl |
+----+--------------+
|  1 | 3,4          |
|  2 | 16,17        |
|  3 | 13,15        |
|  4 | 13,14        |
|  5 | 11,12        |
+----+--------------+
5 rows in set

mysql> select * from tab_b;
+----+-------+
| id | text  |
+----+-------+
|  1 | text1 |
|  2 | text2 |
|  3 | text3 |
+----+-------+
3 rows in set

mysql> 

3.解决本题的SQL或许可以这么写:

SELECT b.* FROM tab_a a
LEFT JOIN tab_b b 
ON LEFT(a.`share_imgurl`, LOCATE(",", a.`share_imgurl`)-1) = b.`id`
WHERE b.`id` IS NOT NULL;

+----+-------+
| id | text  |
+----+-------+
|  3 | text3 |
+----+-------+
1 row in set
【热门文章】
【热门文章】