Mysql 如果第一个sql select为空,如何运行第二个sql select?
我一直在寻找答案,我发现了关于CASE,IFF和UNION的问题,但我一直没有弄清楚,下面是我一直在尝试的Mysql 如果第一个sql select为空,如何运行第二个sql select?,mysql,database,case,Mysql,Database,Case,我一直在寻找答案,我发现了关于CASE,IFF和UNION的问题,但我一直没有弄清楚,下面是我一直在尝试的 SELECT * FROM car_label as a INNER JOIN car as b ON a.label_id = b.label_id WHERE a.car_id = 619 UNION ALL SELECT * FROM car WHERE car_id = 619 如果第一个select返回空,我想运行第二个selec
SELECT *
FROM car_label as a
INNER JOIN car as b
ON a.label_id = b.label_id
WHERE a.car_id = 619
UNION ALL
SELECT *
FROM car
WHERE car_id = 619
如果第一个select返回空,我想运行第二个select。第一个部分工作得很好,选择*FROM car_label作为内部连接car as b ON a.label_id=b.label_id其中a.car_id=:car_id,我只是尝试包含第二个选择,以防第一个为空
更新:
Message: 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF (SELECT * FROM car_label as a INNER JOIN car as' at line 1'
试试这个:
SELECT *
FROM car_label as a
INNER JOIN car as b ON a.label_id = b.label_id
WHERE a.car_id = 619
UNION ALL
SELECT *
FROM car
WHERE car_id = 619
AND NOT EXISTS (SELECT 1
FROM car_label as a
INNER JOIN car as b ON a.label_id = b.label_id
WHERE a.car_id = 619)
因此,如果第一个查询返回任何数据,那么notexists将为true,因此第二个查询条件将为true,反之亦然
请注意,为了使此查询正常工作,返回的列应该具有相同的计数和相同的数据类型,因此您可能需要列出列而不是*
但是,我认为您可能需要尝试左连接,因此如果car_标签中没有匹配的车辆,您仍然可以从car表中获取数据:
试试这个:
SELECT *
FROM car_label as a
INNER JOIN car as b ON a.label_id = b.label_id
WHERE a.car_id = 619
UNION ALL
SELECT *
FROM car
WHERE car_id = 619
AND NOT EXISTS (SELECT 1
FROM car_label as a
INNER JOIN car as b ON a.label_id = b.label_id
WHERE a.car_id = 619)
因此,如果第一个查询返回任何数据,那么notexists将为true,因此第二个查询条件将为true,反之亦然
请注意,为了使此查询正常工作,返回的列应该具有相同的计数和相同的数据类型,因此您可能需要列出列而不是*
但是,我认为您可能需要尝试左连接,因此如果car_标签中没有匹配的车辆,您仍然可以从car表中获取数据:
我不太确定你的问题。据我所知,如果存在,你可以去 试试下面 MSSQL MySQL
我不太确定你的问题。据我所知,如果存在,你可以去 试试下面 MSSQL MySQL
当我在pdo准备中尝试IF时,我收到了一些信息,知道吗?:消息:“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“IF EXISTSSELECT*FROM car_标签”作为“第1行”的正确语法。您使用的是SQL server还是MySQL?我使用的是MySQL。谢谢,我刚才在读,我会尝试一下。虽然很奇怪,我仍然收到相同的语法错误。这是我在pdo准备中尝试IF时收到的,知道吗?:消息:“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“IF EXISTSSELECT*FROM car_”标签作为“第1行”的正确语法。您使用的是SQL server还是MySQL?我使用的是MySQL。谢谢,我刚刚阅读了一遍,我会尝试一下。奇怪的是,我仍然收到相同的语法错误。
IF EXISTS(SELECT * FROM car_label as a INNER JOIN car as b ON a.label_id = b.label_id WHERE a.car_id = 619)
BEGIN
SELECT *
FROM car_label as a INNER JOIN car as b ON a.label_id = b.label_id
WHERE a.car_id = 619
END
ELSE
BEGIN
SELECT *
FROM car
WHERE car_id = 619
END
IF (SELECT * FROM car_label as a INNER JOIN car as b ON a.label_id = b.label_id WHERE a.car_id = 619) THEN
BEGIN
SELECT *
FROM car_label as a INNER JOIN car as b ON a.label_id = b.label_id
WHERE a.car_id = 619
END;
ELSE
BEGIN
SELECT *
FROM car
WHERE car_id = 619
END;
END IF;