如果MySQL存在并且与另一个表不匹配,则返回TRUE
我正在制作一个用来回顾电影的应用程序,我有这些表格如果MySQL存在并且与另一个表不匹配,则返回TRUE,mysql,Mysql,我正在制作一个用来回顾电影的应用程序,我有这些表格 mysql> SELECT title, rating, review, username FROM movies; +------------+--------+--------------+----------+ | title | rating |
mysql> SELECT title, rating, review, username FROM movies;
+------------+--------+--------------+----------+
| title | rating | review | username |
+------------+--------+--------------+----------+
| The Matrix | 5 | Great movie! | Ryan |
| Avatar | 5 | Cool | Ryan |
+------------+--------+--------------+----------+
mysql> SELECT username FROM users;
+----------+
| username |
+----------+
| Ryan |
| John |
+----------+
我试图做的是,如果用户名存在以显示配置文件,则返回TRUE;如果没有结果显示404,但没有任何与之关联的审阅,则返回审阅数据(如果存在)
我尝试过使用EXISTSSELECT username从username=John的用户那里选择username,结果返回1,但我似乎不知道如何使用它设置if语句
编辑:为了澄清,如果用户存在,我尝试返回TRUE,但没有对任何电影进行评级,但返回其他评论。1和TRUE都是
因此,您只需在现有代码前面添加一个IF:
IF EXISTS(SELECT username FROM users WHERE username = "John")
您想要使用的是一个。您希望能够在一个结果中同时从两个表中获取信息
对于您的特定情况,您可能希望将movies表与users表连接起来。因为您可能在movies表中有用户名不存在的记录,所以您需要使用左联接。下面是一个快速入门的片段:
SELECT
m.title,
m.rating,
m.review,
m.username,
CASE WHEN u.username IS NULL THEN FALSE ELSE TRUE END as user_exists
FROM movies m
LEFT JOIN users u ON u.username = m.username
作为一种解释。您可以使用EXISTS前面的SELECT来执行此操作,因为IF条件实际上没有返回a,因此开销会稍微大一些
SELECT EXISTS(SELECT username FROM users WHERE username = 'John') as truth;
这将返回一个名为truth的列。它将被设置为1或0-
质疑
Spring数据将字符串“true”或“false”映射为布尔值
1 = true
0 = false
SELECT IF( EXISTS(SELECT * FROM users WHERE LOWER(username) ='name' ),'true','false' )AS result