这是我的代码,我无法弄清楚为什么以下代码返回错误操作数应该包含1列。我知道这两个查询都与我下面的查询无关。任何帮助将不胜感激
SELECT *
FROM 2014_summary, 2014_profiles
WHERE 2014_summary.player_id = 2014_profiles.player_id AND tournament_id = 'bec904c4-b2a3-4eba-a2bc-335aca680a40' AND 2014_summary.player_id
NOT IN
(SELECT
T1.*,
T2.player_id as primary_player_id
FROM (SELECT id, lead_id, form_id, MAX(case when field_number = 1 then value end) display_name,
MAX(case when field_number = 7 then value end) email,
MAX(case when field_number = 6 then value end) tournament_name,
MAX(case when field_number = 3 then value end) primary_golfer,
MAX(case when field_number = 4 then value end) backup_golfer,
MAX(case when field_number = 5 then value end) date,
MAX(case when field_number = 8 then value end) tournament_id
FROM `wp_rg_lead_detail`
GROUP BY lead_id)T1
INNER JOIN (SELECT CONCAT(first_name, ' ', last_name) as player_name, player_id FROM 2014_profiles)T2 ON T1.primary_golfer = T2.player_name
WHERE display_name = "Hosker" AND tournament_id != 'bec904c4-b2a3-4eba-a2bc-335aca680a40')
ORDER BY (last_name) ASC
答案 0 :(得分:0)
您的not in
是:
2014_summary.player_id NOT IN
(SELECT T1.*, T2.player_id as primary_player_id
MySQL不知道在select
中使用哪个列与player_id
进行比较。所以它返回一个错误。实际上,这是ANSI标准SQL功能,所有数据库都以这种方式工作。 in
中的子查询只需要返回一列。
我想你想要:
2014_summary.player_id NOT IN
(SELECT TT2.player_id
. . .