![](/img/trans.png)
[英]How do you display data from multiple entries in a mysql table that are JOINED with another via a single value match?
[英]How do you pull all data from a joined table when a related record contains a given value in MySQL?
我創建了以下查詢:
SELECT wvwcs1.*, wvwcs2.* FROM wvwcs1
inner join wvwcs2 on wvwcs1.id = wvwcs2.wvwcs1_id
inner join wvwcs2 w2 on wvwcs1.id = wvwcs2.wvwcs1_id AND wvwcs2.value LIKE '%ee%'
我的表是這樣創建的:
CREATE TABLE `wvwcs1` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`form_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 COMMENT=' ';
CREATE TABLE `wvwcs2` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`wvwcs1_id` int(10) unsigned NOT NULL,
`value` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=latin1;
以數據為例,僅使用兩個記錄:
mysql> select * from wvwcs1;
+----+---------+
| id | form_id |
+----+---------+
| 1 | 23 |
| 2 | 24 |
+----+---------+
2 rows in set (0.00 sec)
mysql> select * from wvwcs2;
+----+-----------+-------+
| id | wvwcs1_id | value |
+----+-----------+-------+
| 1 | 1 | aa |
| 2 | 1 | bb |
| 3 | 1 | cc |
| 4 | 2 | aa |
| 5 | 2 | cc |
| 6 | 2 | dd |
| 7 | 2 | ee |
+----+-----------+-------+
2 rows in set (0.00 sec)
我需要做的是從wvwcs2
中選擇所有記錄,其中wvwcs2
中的一條記錄是給定值。 因此,假設我們要選擇wvwcs2.value
= dd
記錄。 在這種情況下,我們將返回:
+----+-----------+-------+
| id | wvwcs1_id | value |
+----+-----------+-------+
| 4 | 2 | aa |
| 5 | 2 | cc |
| 6 | 2 | dd |
| 7 | 2 | ee |
+----+-----------+-------+
當前運行此查詢時,它會提供所有記錄。 我以為我需要在同一張桌子上做一個內部聯接,但是我必須離開。 我感到難過。
嘗試這個:
SELECT A.*, C.form_id
FROM wvwcs2 A JOIN
(SELECT DISTINCT wvwcs1_id FROM wvwcs2 WHERE LOWER(`value`) LIKE '%dd%') B
ON A.wvwcs1_id=B.wvwcs1_id
LEFT JOIN wvwcs1 C
ON A.wvwcs1_id=C.id;
請參閱SQL Fiddle上的演示 。
這可能是您想要的:
SELECT A.*, B.*
FROM wvwcs1 A JOIN wvwcs2 B ON A.id = B.wvwcs1_id
WHERE A.id IN
(SELECT wvwcs1_id FROM wvwcs2 WHERE value like '%ee%');
請參閱有關SQL Fiddle的演示 (基於cdaigas的初始工作)
發表第一個評論后,最簡單的解決方案似乎是以下操作(根本不需要在此處加入任何內容):
SELECT * FROM wvwcs2 WHERE wvwcs1_id IN
(SELECT wvwcs1_id FROM wvwcs2 WHERE value like '%ee%');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.