2016-07-27 48 views
1

表1MySQL的選擇名稱

customer_name  restaurant_id   visits 
shubham    1      4 
nayan    2      6 

表2

restaurant_id  restaurant_name 
    1      ramon hux 
    2      Mt.Pete's 

問題:打印誰比3和餐館名稱訪問更大的客戶的名稱應有空格還是單引號?

我的回答:

select customer_name from table1 where id=(select id from table2 
where restaurant_name like "% %" or restaurant_name like "%'%") and visits>3; 

問題:子查詢返回多個1行;

我該如何解決這個問題?

+1

使用'in'而不是'='。 –

+2

看起來和聞起來像是功課給我 – RiggsFolly

回答

3

嘗試使用IN條款:

select customer_name from table1 where id IN (select id from table2 
where restaurant_name like "% %" or restaurant_name like "%'%") and visits>3; 

你的子查詢返回超過1個ID,因此查詢失敗。您需要使用IN來合併所有的ID。

2

取而代之的是子查詢,您可以通過使用JOIN做同樣的:

SELECT T1.customer_name 
FROM table1 T1 
JOIN table2 T2 ON T2.id = T1.id 
WHERE T1.visits > 3 AND (T2.restaurant_name LIKE "% %" OR T2.restaurant_name LIKE "%'%")