【问题标题】:select data Intersect / inner join MySql选择数据相交/内连接MySql
【发布时间】:2020-08-23 12:43:30
【问题描述】:

我的数据库中有两个表

tb_bengkel,这是tb_bengkel的数据

+------------+--------------+----------------+--------------+
| id_bengkel | nama_bengkel | alamat_bengkel | id_sparepart |
+------------+--------------+----------------+--------------+
|          1 | sejahtera    | jl psm         | 1,2          |
|          2 | abadi        | jl jakarta     | 1            |
|          3 | toyota       | jl soeta       | 3            |
|          4 | honda        | jl cikapundung | 1,2,3        |
+------------+--------------+----------------+--------------+

tb_ranking,这是tb_ranking的数据

+------------+--------------+------------------+---------------------+---------+--------------+
| id_ranking | id_kendaraan | total            | tanggal             | service | id_sparepart |
+------------+--------------+------------------+---------------------+---------+--------------+
|         79 | 12           | 0.77386363636364 | 2020-05-03 11:01:00 |       0 | 1            |
|         80 | 10           | 0.68516666666667 | 2020-05-03 11:01:00 |       0 | 1,2          |
|         81 | 22           | 0.67926571428571 | 2020-05-05 13:01:00 |       0 | 1,2,3        |
|         82 | 11           | 0.61842857142857 | 2020-05-04 13:01:00 |       0 | 2            |
+------------+--------------+------------------+---------------------+---------+--------------+

我在 tb_bengkel 和 tb_ranking 中有字段 id_sparepart,我想选择 tb_bengkel 中的 id_sparepart 是 tb_ranking 中 id_sparepart 的内容的数据

我试试这个查询,

select tb_bengkel.id_bengkel,tb_bengkel.nama_bengkel,tb_bengkel.id_sparepart, tb_ranking.id_ranking,tb_ranking.id_sparepart
from tb_bengkel inner join tb_ranking
on tb_bengkel.id_sparepart=tb_ranking.id_sparepart;

查询结果:

+------------+--------------+--------------+------------+--------------+
| id_bengkel | nama_bengkel | id_sparepart | id_ranking | id_sparepart |
+------------+--------------+--------------+------------+--------------+
|          2 | abadi        | 1            |         79 | 1            |
|          1 | sejahtera    | 1,2          |         80 | 1,2          |
|          4 | honda        | 1,2,3        |         81 | 1,2,3        |
+------------+--------------+--------------+------------+--------------+

但应该出现的数据是 tb_ranking 中的数据,其 id_sparepart 在 tb_bengkel 中可用 例如,id_ranking 79 有 id_sparepart 1 那么应该在

中出现 3
+------------+--------------+--------------+------------+--------------+
| id_bengkel | nama_bengkel | id_sparepart | id_ranking | id_sparepart |
+------------+--------------+--------------+------------+--------------+
|          1 | sejahtera    | 1,2          |         79 | 1            |
|          2 | abadi        | 1            |         79 | 1            |
|          4 | honda        | 1,2,3        |         79 | 1            |
+------------+--------------+--------------+------------+--------------+

因为 id_bengkel 有 id_sparepart 1 的可用性

例子二,在id_ranking 82中有id_sparepart 2,那么应该出现的数据就是

+------------+--------------+--------------+------------+--------------+
| id_bengkel | nama_bengkel | id_sparepart | id_ranking | id_sparepart |
+------------+--------------+--------------+------------+--------------+
|          1 | sejahtera    | 1,2          |         82 | 2            |
|          4 | honda        | 1,2,3        |         82 | 2            |
+------------+--------------+--------------+------------+--------------+

我应该使用什么查询?

【问题讨论】:

    标签: mysql sql select phpmyadmin intersect


    【解决方案1】:
    select * from tb_ranking join tb_bengkel on tb_bengkel.spare LIKE CONCAT( '%', tb_ranking.spare,'%' ) ORDER BY `tb_ranking`.`rank` ASC
    
    

    在加入条件上使用 like 将根据条件给出结果 - 假设 id_sparepart 列是 varchar

    【讨论】:

    • @Irfan F 查询是否满足您的条件?
    猜你喜欢
    • 2015-06-02
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    相关资源
    最近更新 更多