表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