我正在尝试在2个表格中进行查询。
我有一个带有id_person和message的表:( addedEvent)和其他带有id_person,姓名和姓氏的表。 (注册)
问题在于消息可能与一个人(id_person)或每个人(id_person = 0)相关,因此我想在需要时记录每个人的姓名和姓氏,而不是在不需要时。我试过这个:
SELECT message,
IF(id_person!= 0,
SELECT name
FROM registered
WHERE addedEvents.id_person= registered.id_person, 0) AS name,
IF(id_person!= 0,
SELECT surname
FROM registered
WHERE addedEvents.id_person= registered.id_person, 0) AS surname
FROM addedEvents
但是给我一个语法错误而且我没有看到它。
答案 0 :(得分:2)
试试这个:
SELECT message,
IF(
id_person != 0,
(
SELECT name
FROM registered
WHERE addedEvents.id_person = registered.id_person
),
'0'
) AS name,
IF(
id_person != 0,
(
SELECT surname
FROM registered
WHERE addedEvents.id_person = registered.id_person
),
'0'
) AS surname
FROM addedEvents
答案 1 :(得分:1)
我认为您正在尝试选择已注册的相关人员的消息。
试试这个:
select
r.name, r.surname, e.message
from
addedEvents e, registered r
where
e.id_person = r.id_person
and r.id_person != 0
答案 2 :(得分:1)
您不能将SQL视为具有流控制结构等的常规编程语言。您的查询似乎甚至不需要它:
SELECT ae.message, re.name, re.surname
FROM addedEvents ae
LEFT JOIN registered re ON ae.id_person=re.id_person