簡體   English   中英

MySql 基於條件的連接查詢

[英]MySql condition based join query

我有兩張桌子。 這些表有幾個匹配的字段。 我想用兩個條件來獲取它們。

第一個是 if a.site_id = b.site_id ,因為這是我們的外鍵。

其次是a.Show_Link_back=b.Show_Link_back=1

下面是我當前的查詢,但是通過這個查詢,我沒有得到正確的數據,比如第一個表 (a) 沒有響應 data 。

這是表的結構

第一個表字段:

  • 站點 ID
  • Link_back_Image_URL
  • Link_back_Title
  • Show_Link_back

第二個表字段

  • 站點 ID
  • Link_back_Image_URL
  • Link_back_Title
  • Show_Link_back

我想建立一個關系,site_id 是否是外鍵,兩個表的 Show_Link_back 值是否為 1?

當前查詢

SELECT a.site_id, a.Link_back_Image_URL, a.Link_back_Title, 
       a.Link_back_Description, a.Link_back_URL, a.Show_Link_back,
       b.Link_back_Image_URL, b.Link_back_Title,
       b.Link_back_Description, b.Link_back_URL
    FROM download_site a, product_listing b
    WHERE a.site_id = b.site_id 
      AND (a.Show_Link_back=1 or b.Show_Link_back=1)

這是兩個表的小查詢

CREATE TABLE table1
    (`site_id` int(10), `Link_back_Image_URL` varchar(55), 
     `Link_back_Title` varchar(55),`Link_back_Description` varchar(55),
     `Link_back_URL` varchar(55),`Show_Link_back` int(2));

INSERT INTO table1
    (`site_id`, `Link_back_Image_URL`, `Link_back_Title`,
     `Link_back_Description`,`Link_back_URL`,`Show_Link_back`)
VALUES
    (1, 'test', 'test_title','test_desc','test_url','1'),
    (2, 'test', 'test_title','test_desc','test_url','0'),
    (3, 'test', 'test_title','test_desc','test_url','1');

CREATE TABLE table2
    (`site_id` int(10), `Link_back_Image_URL` varchar(55),
     `Link_back_Title` varchar(55),`Link_back_Description` varchar(55),
     `Link_back_URL` varchar(55),`Show_Link_back` int(2));

INSERT INTO table2
    (`site_id`, `Link_back_Image_URL`, `Link_back_Title`,
     `Link_back_Description`,`Link_back_URL`,`Show_Link_back`)
VALUES
    (1, 'test', 'test_title','test_desc','test_url','1'),
    (2, 'test', 'test_title','test_desc','test_url','0'),
    (3, 'test', 'test_title','test_desc','test_url','1');

在我看來很好。 3 行中有 2 行返回

SELECT a.site_id,a.Show_Link_back as ASLB,b.Show_Link_back as BSLB,
a.Link_back_Image_URL, a.Link_back_Title,a.Link_back_Description,a.Link_back_URL, b.Link_back_Image_URL,b.Link_back_Title,b.Link_back_Description,b.Link_back_URL
FROM table1 a
join table2 b
on a.site_id=b.site_id
where a.Show_Link_back=1 and b.Show_Link_back=1

+---------+------+------+---------------------+-----------------+-----------------------+---------------+---------------------+-----------------+-----------------------+---------------+
| site_id | ASLB | BSLB | Link_back_Image_URL | Link_back_Title | Link_back_Description | Link_back_URL | Link_back_Image_URL | Link_back_Title | Link_back_Description | Link_back_URL |
+---------+------+------+---------------------+-----------------+-----------------------+---------------+---------------------+-----------------+-----------------------+---------------+
|       1 |    1 |    1 | test                | test_title      | test_desc             | test_url      | test                | test_title      | test_desc             | test_url      |
|       3 |    1 |    1 | test                | test_title      | test_desc             | test_url      | test                | test_title      | test_desc             | test_url      |
+---------+------+------+---------------------+-----------------+-----------------------+---------------+---------------------+-----------------+-----------------------+---------------+

請注意第 2 列和第 3 列中使用的別名,以了解這一切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM