我有一個查詢問題,你可以告訴我,我錯了嗎?
一個有3個表 用戶,users_eyes,users_eyestype那裏是:MySQL查詢左加入,並有條款
`users` (
`id` int(11) AUTO_INCREMENT,
`first_name` varchar(16),
`last_name` varchar(16)
`email` varchar(16)
`password` varchar(32)
`phone` varchar(13)
`age` tinyint(4)
`gender` varchar(6)
)
`users_eyes` (
`user_id` int(4),
`user_eyescolor_id` tinyint(2),
UNIQUE KEY `user_id` (`user_id`,`user_eyescolor_id`)
)
`users_eyestype` (
`user_id` int(4),
`user_eyestype_id` tinyint(2),
UNIQUE KEY `user_id` (`user_id`,`user_eyestype_id`)
)
這是我的查詢
SELECT
SQL_CALC_FOUND_ROWS
u.first_name,
u.last_name,
u.age,
u.gender,
u.phone,
u.id
, GROUP_CONCAT(DISTINCT ue.user_eyescolor_id SEPARATOR ' ') as eyes_color
, GROUP_CONCAT(DISTINCT uet.user_eyestype_id SEPARATOR ' ') as eyes_type
FROM users u
LEFT JOIN users_eyes ue ON u.id = ue.user_id
LEFT JOIN users_eyestype uet ON u.id = uet.user_id
WHERE
ue.user_eyescolor_id IN (1,2,3,4)
GROUP BY u.id
HAVING
COUNT(ue.user_id) = 4
其結果是一個有兩種眼睛的傢伙,而不是這個有四種眼睛的傢伙 在我加入和eyes_type之前,一切都是完美的。
你能告訴我們你的預期結果嗎?讓我知道你是否仍然需要一個解決方案。 :-) – bonCodigo
SELECT u.id ,GROUP_CONCAT(DISTINCT ue.user_eyescolor_id SEPARATOR '')作爲eyes_color ,GROUP_CONCAT(DISTINCT uet.user_eyestype_id SEPARATOR '')作爲eyes_type FROM用戶ü LEFT JOIN users_eyes UE在u.id = ue.user_id LEFT JOIN users_eyestype UET ON u.id = uet.user_id WHERE ue.user_eyescolor_id IN(1,2,3,4) GROUP BY u.id HAVING COUNT(DISTINCT ue.user_eyescolor_id)= 4 這解決了我的問題,選擇了擁有所有眼球的人 – cNb
現在唯一的問題是當我在單個查詢中加入5-6和更多表時,需要這樣做。需要很長時間才能完成我的查詢 – cNb