Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果MySQL存在并且与另一个表不匹配,则返回TRUE_Mysql - Fatal编程技术网

如果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