[英]mysql query that can be used instead mysql_num_rows
我想知道如何編寫一個mysql查詢來檢查其他表中有多少條記錄嗎?
table 1 : names
id name
-- ----
4 john
5 mike
6 jenny
table 2 : cars
id name_id car
-- ------- ---
1 4 bmw
2 4 wv
3 6 honda
query = "SELECT * FROM names WHERE id = '4'"
<-在該查詢中,我還想檢查cars表中有多少條記錄,或者是否有?
應該這樣做:
SELECT names.id, name, COUNT(car) as 'cars'
FROM names LEFT JOIN cars ON names.id = cars.nameid
WHERE names.id = '4'
GROUP BY names.id, name
在額外的LEFT OUTER JOIN
增加每個人的LEFT OUTER JOIN
SELECT n.*, c.cnt
FROM names n
LEFT OUTER JOIN (
SELECT name_id, cnt = COUNT(*)
FROM cars
GROUP BY
name_id
) c ON c.name_id = n.id
WHERE ID = 4
如果性能是一個問題,則可以將條件添加到左連接中,但會犧牲可維護性。
SELECT n.*, c.cnt
FROM names n
LEFT OUTER JOIN (
SELECT name_id, cnt = COUNT(*)
FROM cars
WHERE name_id = 4 -- Condition needs to be updated in two places
GROUP BY
name_id
) c ON c.name_id = n.id
WHERE ID = 4
SELECT n.*, COUNT(c.*) FROM names n, cars c WHERE n.id = 4
您還可以命名該列:
SELECT n.*, COUNT(c.*) AS `num_cars` FROM names n, cars c WHERE n.id = 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.